Main Page - Quest3D

Main Page

From Quest3D

Jump to: navigation, search
  • Справочный Материал
  • Что нового в Quest3D 4.0
  • Примеры для Quest3D 4.0

Добро пожаловать в Quest3D Wiki. В этой справочной системе вы можете найти наиболее свежую информацию о Quest3D. Сюда входят документация, видео, примеры и инструменты, которыми вы можете воспользоваться. Quest3D WIKI является закрытой. С целью поддержания документации в порядке мы отключили функцию редактирования для рядовых пользователей. Связаться с нами по этим вопросам вы можете по адресу Quest3D на info@quest3d.com

Перевел Ovod, 2008


NewIn40 - Quest3D

NewIn40

Contents

  • 1 New in Quest3D 4.0
    • 1.1 New functionality
      • 1.1.1 Object Oriented Development
      • 1.1.2 GUI System
      • 1.1.3 Collada import
      • 1.1.4 Weather System
      • 1.1.5 OGG Support
      • 1.1.6 Newton Game Dynamics
      • 1.1.7 Motion Trackers
    • 1.2 Changes and Add-ons

New in Quest3D 4.0

This article will guide you to documentation and articles about everything that is new in Quest3D 4.0. The new major version of Quest3D introduces a lot of new functionality and features. Existing functionality changed at some places, so existing users may be interested in the list of changes.

New functionality

Object Oriented Development

All Quest3D Editions

The most important new functionality in Quest3D 4.0 is the introduction of an Object Oriented Development system. This system will make you able to create large, well structured and maintainable project, as well as reusable components.

An introduction and tutorials about OO development in Quest3D can be found here.

GUI System

Quest3D Power and VR Edition

A long awaited set of GUI controls in Quest3D is also present in 4.0. From now on, it will be very easy to use sliders, editboxes, list controls and more in your real-time 3D application. In the examples section, you will find a demo that shows how to use the new controls.

Collada import

All Quest3D Editions

With the support of Collada, importing content from a wide variety of 3D authoring tools into Quest3D will become a breeze. Collada support in Quest3D 4.0 introduces a very exciting new possibility: real-time import of your 3D Content.

Importing collada files is very simple, using the SceneImporter channel. Demos on how to use this channel can be found in the examples section.

Weather System

Quest3D VR Edition

The Quest3D weather system allows for implementing fully configurable weather conditions into your 3D scene. The weather system is made with the new OO system so it will fit right into your new Quest3D 4.0 project structure.

Main features:

  • simple way to adjust the sun position by providing a time and date
  • real-world sun position by providing latitude, longitude and timezone
  • three different cloud layers/types
  • two types of precipitation, Rain and Snow
  • fog
  • thunder and lightning
  • audio effects for thunder and rain
  • simple GUI for configuring weather

OGG Support

Quest3D Power and VR Edition

Quest3D 4.0 has support for the OGG audio file format. This format offers a higher quality and compression rate than MP3 An example on how to use the OGG Player can be found in the examples section.

Newton Game Dynamics

Quest3D Power and VR Edition

Support for Newton Game Dynamics, formerly known as "Newton For Quest" is now official part of the Quest3D product. Helpful tutorials about how to use the Newton Channels can be found in the Newton Game Dynamics tutorial tutorial section.

Motion Trackers

Quest3D VR Edition

Quest3D 4.0 VR Edition supports two new motion trackers:

  • ARTTrack motion tracking support
  • WiiMote support

Changes and Add-ons


Articles - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Articles

From Quest3D

Jump to: navigation, search

Articles

Publishing

  • Avoiding automatic updates of the ActiveX control

Using Quest3D Features

  • Introduction to HDR Rendering
  • Water rendering in Quest3D
  • HLSL Semantics


Tutorials - Quest3D

Tutorials

Уроки

Tutorial manual cover

Текстовые Уроки

  • Учебное Руководство

Видео Уроки

  • Видео Уроки
  • Видео уроки по физическому движку Newton Game Dynamics

Уроки Online

  • Уроки посвященные объектно ориентированному программированию
  • Продвинутый Урок по Движению
  • Продвинутый Урок по Движению 2
  • Экспорт световых карт из Lightwave в Quest3D

Примеры

  • Примеры для 4.0

Перевел Ovod, 2008


Exporting - Quest3D

Exporting

Contents

  • 1 Exporting to Quest3D
    • 1.1 3D Studio MAX®
      • 1.1.1 Quest3D Plug-in
      • 1.1.2 .X exporter by Microsoft®
      • 1.1.3 Pandasoft .X Exporter
      • 1.1.4 kW X-porter
    • 1.2 Maya®
      • 1.2.1 Old X Exporters
    • 1.3 Lightwave 3D®
      • 1.3.1 Tutorial
    • 1.4 Softimage®|XSI®
    • 1.5 Cinema 4D®
    • 1.6 AutoCAD® 2002 X Exporter
    • 1.7 Adobe Photoshop®
      • 1.7.1 NVIDIA® Normal map filter
      • 1.7.2 NVIDIA® DDS file plug-in

Exporting to Quest3D

3D Studio MAX®

Quest3D Plug-in

When Quest3D 3.5 was released we also introduced the new exporter for 3D Studio MAX. Releases of this plug-in are more frequent than updates of Quest3D so make sure you check out this web page frequently.

  • Quest3D Plug-in for 3D Studio MAX
.X exporter by Microsoft®

This exporter fixes all issues with exporting UV coordinates, surface names, crashes and flipping the Y and Z axes. Please look at Quest3D™ manual for detailed instructions on exporting from 3D Studio MAX®.

  • Download .X exporter for 3D Studio MAX® R4.0
  • Download .X exporter for 3D Studio MAX® R5.0
  • Download .X exporter for 3D Studio MAX® R6.0 R7.0 and R8.0
  • Download .X exporter for 3D Studio MAX® R7.0
Pandasoft .X Exporter

This exporter has the capability to export both physique and skin deformations. The exporter also supporst vertex color export and [B]Up to two UV sets[/B](for baked lightmap export)

  • Go to the Pandasoft .X exporter web page
kW X-porter

An exporter plug-in for Autodesk 3ds Max version 8 and 9, which writes proper .X mesh files with proper skinning, effect parameters, named animations, and multiple texture coordinate channels.

  • Go to exporter web page

Maya®

This exporter supports vertex colors, skinning and animation.

  • Download .x exporter for Maya® 4.5
  • Download .x exporter for Maya® 5.0
  • Download .x exporter for Maya® 6.0
  • Download .x exporter for Maya® 6.5
  • Download .x exporter for Maya® 7.0
  • Download .x exporter for Maya® 8.0 by SuperX Studios
Old X Exporters

Older exporters for older Maya versions, without vertex color support.

  • Download .x exporter for Maya® 2.5
  • Download .x exporter for Maya® 3.0
  • Download .x exporter for Maya® 4.0
  • Download .x exporter for Maya® 4.5

Lightwave 3D®

This exporter supports vertex colors, skinning and animation.

  • Download .x exporter for Lightwave 3D® 5.6
  • Download .x exporter for Lightwave 3D® 7.5
  • Go to DSTORM webpage for Lightwave 6.5, 7.5 and 8.0 .X exporters
Tutorial
  • Exporting lightmaps from Lightwave to Quest3D

Softimage®|XSI®

This exporter is available on the XSI web page.

  • Go to the .XSI exporter download web page

Cinema 4D®

There is a .X exporter available for a large number of Cinema4D versions. Please visit the homepage of the developers for more information and a download link. Go to the .X Exporter for Cinema 4D website

AutoCAD® 2002 X Exporter

Export .X files directly from AutoCAD 2002. Supports Architectural Desktop.

  • Download .X exporter for AutoCAD 2002

Adobe Photoshop®

NVIDIA® Normal map filter

This filter for Photoshop allows you to convert grayscale images to normal maps. Normal maps are needed for per-pixel bump mapping.

  • Download NVIDIA® normal map filter
NVIDIA® DDS file plug-in

With this Photoshop plug-in you can load and save DDS files. This plug-in is essential when you want to create your own cube maps or pre-calculate hardware texture compression.

  • Download DDS exporter


Tutorials/Examples - Quest3D

Tutorials/Examples

< Tutorials(Redirected from Examples)
Jump to: navigation, search

Contents

  • 1 Examples
    • 1.1 Collada Import
    • 1.2 GUI
    • 1.3 Newton
    • 1.4 Weather System
    • 1.5 Object Oriented Development
    • 1.6 OGG
    • 1.7 Motion Trackers
    • 1.8 Related documentation

Examples

Collada Import

  • Demo showing how to use the SceneImporter channel.
  • Viewer that overviews of the imported Collada scene.

GUI

  • Demo showing GUI components in Quest3D

Newton

  • Simple Start
  • Not yet available
  • Collision Compound
  • Convex Hull
  • Collision Tree
  • Centre of Mass
  • Not yet available
  • Hinge Joint
  • Ball and Socket Joint
  • Slider Joint
  • UpVector
  • Materials
  • Contact Statistics
  • Contact Behaviour

Weather System

  • Weather System

Object Oriented Development

Basic Concepts

  • Object Creation and Rendering
  • Specialization
  • Inheritance

Patterns

  • Singleton Pattern
  • Factory Pattern
  • Manager Pattern
  • Observer Pattern
  • Facade Pattern
  • Hierarchical Visitor Pattern

Advanced Concepts

  • Dynamic Object Management
  • Collision Detection
  • Plug-in Based Architecture
  • Resource Management
  • Multi-pass Rendering
  • Multi-target Rendering

OGG

  • OGG Player

Motion Trackers

  • WiiMote

Related documentation

  • Tutorials


SDK - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK

From Quest3D

Jump to: navigation, search

Information for developers

Note: Although this Wiki portal contains the most recent information, not all of the original manual is ported to the Wiki just yet. Please also read the original manual, which can be found in the Quest3D SDK installation (you can find it in the startmenu under Quest3D->SDK).

How to get the SDK

You do not need to download the SDK seperately. It is included with the Quest3D installation and can be found in the Quest3D installation folder.

Before you start building channels Read this first!

SDK Manual

  • Quest3D Core Engine
  • Channels
  • Dialogs

Howtos

  • QuickStart Quick start guide on building channels
  • Visual Studio 2005 Deployment Deployment of Channels created with Visual Studio 2005


Faq - Quest3D

Faq

Contents

  • 1 What is Quest3D?
  • 2 Can I extend Quest3D?
  • 3 What kind of modeling capability is included with Quest3D?
  • 4 What can be imported?
  • 5 Why should I use Quest3D and not product X?
  • 6 What are the costs?
  • 7 What about support?
  • 8 What’s the different between each Quest3D edition?
  • 9 FAQ for developers

What is Quest3D?

Quest3D is a software package to develop real-time 3D applications. It is used to create architecture visualizations, computer based training programs, digital entertainment and many other real-time 3D based programs. What are the main features / capabilities of Quest3D? Quest3D uses a graphical approach to application authoring. You do not need have any programming skills to use it. It allows you to take your 3D models, textures and many other types of assets and turn them directly into an executable or web page. Quest3D comes with a huge set of functions and features. HDR rendering, a dynamics engine, path finding, skinned meshes, HLSL shading, network synchronization, database connectivity and optional LUA scripting are just some of the features. The good news is that no royalties have to be paid for any products you create. Each development computer requires a single usage license and that is all you will have to pay.

What are the system requirements of Quest3D? Software: Quest3D runs on Windows 98, 2000, XP and Vista platforms with DirectX 9 installed.

Hardware: Intel Pentium III or Higher or AMD Athlon processor, 512MBytes RAM, CD-ROM Drive, Hardware accelerated DirectX compatible graphics card and 1024x768 display resolution.

What graphics cards are supported Quest3D supports all 3D cards that support DirectX 9 the performance and available feature set may vary per card.

Can I extend Quest3D?

You can write custom channels in Quest3D with the free Quest3D SDK, or write scripts in LUA.

What kind of modeling capability is included with Quest3D?

Quest3D is not a modeling tool. This means that you will have to import your meshes and animations from other programs. What kind of models can I use with Quest3D? There are three ways to get your models and animation into Quest3D. First of all you can use our excellent .x importer. There are .x export plug-ins available for many 3D programs.

The second method is to use Okino Polytrans which allows transfer of a broad range 3D formats directly into Quest3D. Polytrans is separate 3D format conversion software which should be purchased separately. When Polytrans is installed, Quest3D will automatically offer the many extra import options.

The final method is to use the excellent Quest3D export platform. This exporter is currently only available for 3D Studio MAX but it offers the easiest way to export your scenes directly to Quest3D. Later, the Quest3D export platform will also be made available for Sketchup, Maya and Solidworks. For more information see: Exporting

What can be imported?

Quest3D imports polygon geometry, skinning (up to 4 weights per vertex), vertex colors, multiple texture coordinates, textures, animations, cameras and lights. When you use a .x exporter that exports two UV sets Quest3D will import them. The Quest3D export platform provides the easiest transfer of models which use multiple texture sets such as light maps and color maps. Light maps can be generated by many almost any lighting software and then transferred to Quest3D. Supported texture formats are TGA, BMP, DDS, JPG and PNG. Supported sound formats are WAV and MP3. Who uses Quest3D? Quest3D is used worldwide by companies and institutions both small and large. It is mostly used for architecture visualization and training but other markets are quickly gaining ground. Educational institutions use Quest3D for teaching, development and research. The final products range from executables that run on the web or install on a computer to large dedicated systems. The largest setups are used in VR simulators and other setups that require multiple computers.

What makes Quest3D unique is its ability to provide the flexibility of traditional programming methods for users that are akin to design and graphics. Compared to programming Quest3D is much easier and ‘organic’ which makes it an ideal environment for development of graphics applications.

Quest3D users are varied people from entertainment and multimedia industry, architectural industry, training and simulation industry, educational, as well as design and product visualization industry.

Why should I use Quest3D and not product X?

Quest3D has its innovative interface allows users to create applications using a visual approach to programming. This improves both speed and the ability to harness creativity. Quest3D offers a unsurpassed feature set and an broad range of features. Its approach to support, updates and license cost is greatly appreciated by its users. And finally, Quest3D is truly an industry standard software package used by anyone that needs a serious solution that just does the job.

What are the costs?

Quest3D comes in three editions. Each edition is priced differently. Price can be found on the Quest3D web page or you can ask your local reseller. You need a license for each seat that uses the software. Special pricing is available for educational usage.

Updates are free of charge. For new versions (i.e. 3.x to 4.x) you need to buy an upgrade license which allows for free updates until the next version. An upgrade is available for approximately 33% of a full license.

What about support?

A valid license provides free access to the Quest3D forum, WIKI, support files and software updates. The excellent updates of Quest3D offer many new features and improvements and can be downloaded free of charge. Training and specialized support can be purchased separately.

What’s the different between each Quest3D edition?

Please look here: http://www.quest3d.com/index.php?id=5 for more information.

FAQ for developers

The most frequently asked questions by Quest3D developers can be found on the forum.


Category:Channels - Quest3D

Category:Channels

Каналы (Channels)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

В данной категории 295 статей.
3
  • 3D Graph
  • 3D GraphCommand
  • 3D Object
  • 3D ObjectData
  • 3D Render
  • 3DText
  • 3DTextFromTexture
A
  • ActiveX Data
  • ActiveX Event
  • Advanced Motion Blender
  • Advanced Motion Data
  • Advanced Motion Data Combiner
  • AdvancedMotionCommand
  • AdvancedMotionInfoValue
  • All Types Channel
  • Array Buffer
  • Array Channel
  • Array Column
  • Array Command
  • Array Import
  • Array InfoValue
  • Array Matrix
  • Array Pointer
  • Array Table
  • Array Text
  • Array Value
  • Array ValueOperator
  • Array Vector
  • Array VectorOperator
B
  • Bone
  • Brightness Contrast Gamma
  • Buffer
C
  • CallOnGetChild
  • CallSelected
  • Camera
  • ChannelCaller
  • ChannelSwitch
  • ChannelTemplate
  • CharacterSkin
  • ClearScreen
  • ClothObject
  • CollisionBoxCheck
  • CollisionObject
  • CollisionRayCheck
  • CollisionResponse
  • CollisionSphereCheck
  • Command
  • Copy Image
  • CreateCubeCameraMatrix
  • CubeTexture
D
  • DB Buffer
  • DB DriverMySQL
  • DB DriverODBC
  • DB Info
  • DB Query
  • DB Source
  • DB Text
  • DB Value
  • DebugOutput
  • DepthSortRender
  • Detect3DSettings
  • DetectMouseCollision
  • DynamicLOD
E
  • Envelope
  • Envelope Command
  • Expression Value
F
  • FasTRAK Command
  • FastCollisionResponse
  • FastMultiObjectData
  • FastShaderStencilShadowObject
  • FastSkinning
  • FileDialog
  • FiniteStateMachine
  • FloatTexture
  • Flock of Birds Command
  • Flock of Birds Matrix
  • ForLoop
  • ForceFeedback
G
  • GUI
  • GUISkin
  • Glove Driver 5DT
  • Glove Driver Immersion
  • Glove Driver P5
  • Glove Source
  • Glove Value
  • GoFullScreen
  • Group Array Pointer
  • Group Loader
  • Group Loader Status
  • GroupSelfSave
H
  • HLSLObject
  • HasFocus
  • High Dynamic Range Process
  • Hybrid
I
  • If
  • IfElse
  • ImportObject
  • InActiveX
  • InScreenSaver
  • InScreenSaverPreview
  • InWinAmp
  • Inertia
  • InterfaceFunctionParameter
  • IsChannelLoaded
K
  • Keep Running
L
  • Light
  • Listener
  • Load ChannelGroup
  • LoadBufferFromCache
  • LoadBufferIntoChannel
  • Lua Script
M
  • MIDI Player
  • MIDI Player Command
  • MP3 Player Command
  • Material
  • Matrix
  • MatrixOperator
  • MediaTexture
  • MediaTexture Command
  • MediaTexture Info Text
  • MediaTexture Info Value
  • Minuteman Command
  • MorphObject
  • Motion
  • MotionPlanning
  • MotionPlanningInfoValue
  • MotionPlanningInfoVector
  • MotionSet
  • MotionSetBlender
  • MouseInsideViewRect
  • Mp3 Player
N
  • NaturePainter
  • Network Buffer
  • Network Command
  • Network Info Text
  • Network Info Value
  • Network Matrix
  • Network Text
  • Network Trigger
  • Network Value
  • Newton Ball and Socket
  • Newton Body
  • Newton Body Command
  • Newton Body Matrix
  • Newton Body Switch
  • Newton Body Value
  • Newton Body Vector
N cont.
  • Newton Collision Compound
  • Newton Collision Convex Hull
  • Newton Collision Geometry
  • Newton Collision Primitive
  • Newton Collision Tree
  • Newton Command
  • Newton Contact Behaviour
  • Newton Contact Body
  • Newton Contact Event
  • Newton Contact Value
  • Newton Contact Vector
  • Newton Hinge
  • Newton Joint
  • Newton Joint Command
  • Newton Material
  • Newton Material Contact
  • Newton Motor
  • Newton Point Rope
  • Newton Point Rope Body Accessor
  • Newton Rope
  • Newton Rope Body Accessor
  • Newton Up Vector
  • NotInEditor
O
  • ODE Body
  • ODE Command
  • ODE Info Value
  • OGG Player
  • OGG Player Command
  • OO Class Instances List
  • OO ClassInstance
  • OO ClassType
  • OO Instance Ref Item From Container
  • OO InstanceRefContainer
  • OO InstanceRefItem
  • OO InstanceRefTree
  • OO InterfaceChannel
  • OO InterfaceCommand
  • OO InterfaceFunction
  • OO InterfaceInfoValue
  • OO InterfaceMatrix
  • OO InterfaceText
  • OO InterfaceType
  • OO InterfaceValue
  • OO InterfaceVector
  • OO SectionManager
  • OO ThisClassInstance
  • ObjectDataNormalDisplace
  • OneTime
  • OneTimeReset
  • OpenURL
P
  • ParticleEmitter
  • ParticleEmitterCommand
  • ParticleFlowGrid
  • ParticleLineBeamRenderer
  • ParticleObject
  • ParticleObjectRenderer
  • Patriot Command
  • Present
  • Primitive
  • PrintRenderBuffer
  • ProjectionMatrix
R
  • RSS Feed
  • RSS Feed Info
  • RSS Item
  • Remove Group
  • RenderTexture
  • RenderToCubeMap
  • ResourceManager
  • Rope
  • Rope Action
  • Rope Vector
S
  • SaveBufferInCache
  • SaveChannelGroupToFile
  • SaveChannelToBuffer
  • SaveRenderBuffer
  • SceneImporter
  • Selector
  • Serial Command
  • Serial Data Package
  • Serial Info Value
  • Serial Port
  • Serial Text
  • Serial Value
  • Set Matrix
  • Set Text
  • Set Value
  • Set Vector
  • SetNewStartChannel
  • SetTimeBase
  • ShaderInfo
  • ShaderSurface
  • SkinnedCharacter
  • SkinnedMesh
  • SkinnedMorph
  • SocketAction
  • SocketInfoValue
  • SocketReceiver
  • SocketString
  • SoftwareStencilShadowObject
  • Sound Command
  • Sound File
  • Start3DScene
  • StaticLOD
  • StencilShadow
  • Surface
  • SysInfo
  • System Command
T
  • Text
  • TextFilter
  • TextOperator
  • Textout
  • Texture
  • TickCount
  • Timer Command
  • Timer Value
  • Tracker Driver Intersense
  • Tracker Driver P5
  • Tracker Source
  • Tracker Vector
  • Trigger
  • TypeText
U
  • UniqueID
  • UserInput
V
  • Value
  • Value Vector
  • ValueOperator
  • VectorOperator
  • VertexAnimation
W
  • Wake Particle
  • Wake Waves
  • WiiMote Command
  • Win32 DirectoryCommand
  • Win32 DirectoryInfoText
  • Win32 DirectoryInfoValue
  • Win32 FillRect
  • Win32 Font
  • Win32 FontCommand
  • Win32 FontInfoText
  • Win32 FontInfoValue
  • Win32 MessageBox
  • Win32 SetWindow
  • Win32 SetWindowText
  • Win32 ShowMouseCursor
  • Win32 StartProgram
  • Win32 TextOut
  • WinAmp Info Text
  • WinAmp Running
  • WinAmp Spectrum

Подкатегории

В данной категории 29 подкатегорий.
A
  • A.I. (ИИ)
  • ActiveX
  • Animation (Анимация)
  • Arrays (Массивы)
C
  • Collision (Коллизии)
  • Commands and Settings (Команды и Настройки)
  • Conditional Channels (Условные Каналы)
D
  • Database (База Данных)
  • Depreciated (Обесцененные)
  • Dynamics (Динамика)
H
  • HLSL
N
  • Network (Сеть)
  • New in version 3.5 (Новое в версии 3.5)
  • New in version 3.6 (Новое в версии 3.6)
N cont.
  • New in version 4.0 (Новое в версии 4.0)
  • Newton (Ньютоновская физика)
O
  • ODE
  • OO
  • Objects and Rendering (Объекты и Визуализация)
  • Operators (Операторы)
P
  • Particles (Частицы)
S
  • Scripting (Скриптинг)
  • Shaders (Шейдеры)
  • Sound (Звук)
  • System (Система)
T
  • Texturing (Текстурирование)
  • Trackers (Трекеры)
U
  • UserInput (Пользовательский ввод)
V
  • Variables (Переменные)

Перевел Ovod, 2008


3D Graph - Quest3D

3D Graph

Contents

  • 1 3D Graph
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Get Base type
      • 1.5.1 Note
    • 1.6 Remarks

3D Graph

General

Holds a 3D graph which can be used by MotionPlanning.

Children

  1. Source Object - CollisionObject
    • Collision Object to draw the 3D Graph on.
  2. Collision Object - CollisionObject
    • Collision Object to determine where no access is allowed.

Description

The 3D Graph channel is often used for channels that require a 3D Graph. For example the MotionPlanning channel uses the 3D Graph to plan its motion. Multiple MotionPlanning channels can use the same 3D Graph. By analyzing the 3D Graph channel in combination with the Collision Objects the channel is able to determine if a path is accessible.

To use a 3D Graph make sure it is always called. The 3D Graph is able to draw itself in Quest3D. By selecting the 3D Graph channel in the Nature & Pathfinding Section it will be possible to draw on the first linked Collision Object. The 3D Graph channel requires constant calling for it to work correctly.

CallChannel

Calling this channel will make sure it functions correctly.

Get Base type

Getting the Base type will result in returning the 3D Graph information to the parent channel.

Note

When drawing a 3D Graph make sure that each path line is connected to a node. Creating a node that is not connected to a path line can result in unwanted behaviour. Sometimes it may seem like a node is connected, since a path line is on top of it, however it is not.

Example of a seemingly connected node.

Remarks

Please check the Quest3D tutorial manual to see how this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | A.I.


Reference Manual/Editor/3D Graph Painting - Quest3D

Reference Manual/Editor/3D Graph Painting

< Reference Manual | Editor
Jump to: navigation, search

Contents

  • 1 3D Graph Painting
    • 1.1 General information
    • 1.2 AI Quest3D Graph
    • 1.3 MotionPlanning

3D Graph Painting

General information

Two channels are used to accomplish the motion planning these are AI Graph and Motion Planning. Motion planning will use the AI Graph to determine the best route to its target if no direct path is available.

AI Quest3D Graph

The AI Graph needs to be called each frame. If collision objects are connected to its first link you will be able to paint on these object a graph. In the Nature & Pathfinding section you will be able to select the AI Graph channel under the 3D Graph painting tab. Selecting a graph will enable you to switch to paint mode to paint on the collision objects linked to the first child link of the AI Quest3D Graph.

You paint nodes and paths between nodes to create a graph of your scene where characters/items can move from node to node. While painting you can determine at which height each node will be placed by changing the “New node height” option. These options only work in paint mode. Make sure you do not paint a path trough a wall since that might result on the MotionPlanning channels planning to go trough that wall. Make sure nodes are connected to each other so that you can clearly follow a path from node to node. For example 3 nodes where the first and thirth are connected and the second is on its own will never generate a path planning trough all 3 nodes since only node 1 and 3 are connected.

These nodes look alright but only two are connected!

While painting you can change the weights of paths so that the planning might choose a route that is physically longer but has a lower total weight. In this way you can simulate fire being present which gives a high weight and the character does not want to plan past the fire unless no other path is present.

The second child links allow you to connect a collision level. If for example your level has a big gap you might want the routine not to choose a direct path trough the gap since the character will fall in the gap. You can solve this by connecting a collision level that has solid walls at the places you do not want the routine to detect direct paths to the target. This also counts for fences that have gaps. The routine might find a direct path while none exists. A second solution to collision levels is placing box primitives in your level and connect those as collision objects.

MotionPlanning

The motion planning channel uses a linked AI Quest3D Graph to determine with the A* algorithm which path is fastest from source to destination. Once a path is created the Motion Planning which is a vector will point to the first target node or if a direct path is possible directly to the target. The templates available will allow you to move your characters/items using this information or you can use it in your own way. Once the MotionPlanning source position comes within the threshold distance “Next Node Range” link it will jump to the next target or the destination. Motion planning is able to recalculate its path when the target moves to much or by calling the channel once. This will allow you to recalculate when you require it.

A special case might exist where a target is on a ledge higher or lower then the source position. A direct line might be possible between these two nodes. If you do not want your object to fly trough space you can set the threshold in the MotionPlanning dialog edit the “Reject direct path at height difference” for this option. It will ignore the direct path if the difference is higher then the given height difference.

There are multiple modes of using the 3d graph window. In idle mode nothing will happen. In paint mode you can create new nodes. In erase mode you can delete paths and nodes and in select mode you can select nodes and paths to change their properties.

For paths you can change the weight of the path. There are two weigths for the two directions a path has. For example a path that leads from a ledge down might have a normal weight for going down (to simulate jumping the ledge) but a very high weight for up (simulating you can't walk/jump up).

Nodes have a height from the ground which can be edited for the selected node.

One Level Up Nature & Pathfinding Section

Back to - Editor

Back to Main Index

Category: Editor


3D GraphCommand - Quest3D

3D GraphCommand

Contents

  • 1 3D GraphCommand
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Get Base type
    • 1.6 Commands
      • 1.6.1 Set path weight forward
      • 1.6.2 Set path weight backward
      • 1.6.3 Set node height
      • 1.6.4 Set path enabled forward
      • 1.6.5 Set path enabled backward
    • 1.7 Remarks

3D GraphCommand

General

Command channel which act on 3D Graph channels.

Children

  1. 3D Graph - 3D Graph
    • 3D Graph to be changed.
  2. Command Specific - All Types Channel
    • Depends on the selected command.

Description

The 3D GraphCommand is able to dynamically change the properties of a 3D Graph.

CallChannel

Calling this channel will make sure it functions correctly.

Get Base type

This channel can only be called.

Commands

Set path weight forward

This commands sets the weight of the forward path. The first Value determines the path number to change, the second Value is the new weight to set for the forward path.

Set path weight backward

This commands sets the weight of the backward path. The first Value determines the path number to change, the second Value is the new weight to set for the backward path.

Set node height

This command will change the height of a node. The first Value determines the node number to change, the second Value is the new hight to set for the node.

Set path enabled forward

This commands enables the forward path. The first Value determines the path number to change, the second Value disables/enable the forward path.

Set path enabled backward

This commands enables the backward path. The first Value determines the path number to change, the second Value disables/enable the backward path.

Remarks

Please check the Quest3D tutorial manual to see how this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings | A.I.


3D Object - Quest3D

3D Object

Contents

  • 1 3D Object
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 The Location of the object
    • 1.5 The pivot point
    • 1.6 The looks of an object
    • 1.7 Advanced Feature
    • 1.8 CallChannel
    • 1.9 Applications
    • 1.10 Tips

3D Object

General

3D Object that exists of one or more Surfaces

Children

  1. Object Matrix - Matrix
    • Position, size and rotation of the 3D object
  2. OffSetMatrix - Matrix
    • The Offset Matrix (also called Pivot point) of the surface
  3. Surfaces - Surface
    • One or more Surfaces that define the 3D Object.
  4. Draw Object - Value
    • If no Value channel is linked the default value = 1, means the object will be render. If you link a Value channel, a value of 0 the object will not be render, a value of 1 will render the object.

Description

Dependencies of an object

This channel joins a set of other channels to form a channel that can be displayed by rendering it with a 3D Render. The object consists out of a matrix, an offset matrix, and several surfaces. Each surface is formed by it's material settings, the mesh data, texture settings and textures.

The Location of the object

The first child of this channel is a Matrix. It represents the location of the object. It contains size, rotation and position. It can even contain shearing. In most cases you'll use a Motion as a matrix for the object.

The pivot point

The rest location of an object is the location of the object when it has a default location (pos: 0,0,0, rot: 0,0,0, size: 1,1,1). Since an object always rotates around 0,0,0 of the rest position you can use this matrix to rotate around another point. Watch out when you change the rest rotations because this can cause in unexpected results.

The looks of an object

What comes next are the surfaces of an object. Each surface represents a different section of the object. For example you might use different surfaces for the ceiling, walls and the floor of a room.

Advanced Feature

In the channel properties window (double click channel) you can find extra options. Objects will not be drawn if they are not visible. This is normally done on a per surface bases. In this dialog you can also add a check for the whole object. By selecting the "Check whole object for frustum culling" option. Note that when this option is first enabled or the "Calculate Now" bottom is clicked the object box is calculated. If you would add new surfaces after checking this option that surface might not be checked for size. Also if a particle object is linked as a surface no size will be calculated since particles are dynamic objects. Make sure that when you enable this advanced feature the appropriate surfaces are linked to the object. These surfaces can at a later stage be removed and the object will still check for the object box when the settings was enabled or the "Calculate Now" button was clicked.

CallChannel

This channel can not be called. Please use the 3D Render channel to display the object channel. The 3D Render makes sure that the objects are rendered in the right order.

Applications

3D objects are the basis of the 3D engine currently present in Quest3D. They are the link between 3D Render and Surface to make sure the surfaces are rendered correctly.

Tips

  • Instead of rendering this channel with a 3D Render you can also call this channel. You can also turn lights on or off by hand. And you can set a camera by hand by calling it.
  • To create a NULL object connect a Motion to an object. This way you can edit a motion that has no object.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


3D ObjectData - Quest3D

3D ObjectData

Contents

  • 1 3D ObjectData
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

3D ObjectData

General

Contains mesh data

Children

  1. Matrix Texture Set 0 - Matrix
    • This is the matrix to reposition the first texture set. Because texture coordinates are in 2D only the x and y are used.
  2. Matrix Texture Set 1 - Matrix
    • This is the matrix to reposition the second texture set. Because texture coordinates are in 2D only the x and y are used.

Description

This channel holds 3D data that represents a surface. This channel can be linked to a Surface to specify the geometry for the surface. The actual data of this channel contains the vertices, polygons, uv coordinates and vertex normals of a surface. You can link a Motion or another Matrix to this channel to move, scale or rotate the texture. UV coordinates are 2d coordinates so you should only rotate, move and scale in the XY plane.

CallChannel

Renders the ObjectData with the current material, current camera, current world matrix and current lights.

Remarks

The actual mesh data is saved in the channel. You can create a new mesh by importing an 3D object from a modeling package. The position of the last UV coordinates are the ones that are saved in the file.

Applications

The ObjectData is used by many other channel. For example the ParticleObject uses an object data to determine the source shape and the number of particles. The SkinnedMesh can be used as a Object Data and uses an Object Data as the source for the skinning deformation. DynamicLOD uses object data as a source to downscale the geometry with distance.

Tips

  • If you do not have any access to a modeling application you can use Primitive to create simple shapes

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


3D Render - Quest3D

3D Render

Contents

  • 1 3D Render
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

3D Render

General

Render 3D objects with the current camera or the camera linked to the first child with the lights that are linked to this render.

Children

  1. Camera to Use - Camera
    • Camera to use for rendering the objects.
  2. Objects - 3D Object
    • Objects to render.
  3. Lights - Light
    • Lights you want to use while drawing the objects.

Description

This channel is used to draw 3D objects. When you call this channel all the objects are rendered to the backbuffer that can be copied to the screen by the Present.

In the properties window, you can change the order of the rendered objects by selecting one, and draggin it up or down in the list. The links to the children will be changed automatically.

CallChannel

Calling this channel will render all the 3D Object channels that are connected to this channel. It will use the Camera that is attached to this channel. With the Lights that are also attached to this channel.

It is possible to render objects without attaching cameras and lights. In this case it will use the camera and lights that are set and enabled at the point you call this channel.

Remarks

This channel does not render the object itself but it tells the object to render themselves. In practice you won't notice this. It just allows the objects to determine how they should render themselves.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


3DText - Quest3D

3DText

Contents

  • 1 3DText
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

3DText

General

Converts a single line of text into a 3D representation

Children

  1. Matrix Texture Set 0 - Matrix
    • The matrix for altering the texture coordinates of the first coordinates set.
  2. Matrix Texture Set 1 - Matrix
    • The matrix for altering the texture coordinates of the second coordinates set.
  3. Text to convert to 3d text - Text
    • Text to convert
  4. Font to use for the Text - Win32 Font
    • The true type font that should be used
  5. Text Complexity - Value
    • The value can be set from 0 (least complex) to 1 (most complex)

Description

Example of a 3D text

This channel generates a mesh from a text. You can specify the text, the complexity and the font to use. The font is specified by linking a Win32 Font. You can use this channel just as any other 3D ObjectData. You can deform it with a skinning deformer or detect collision on it for example.

Example of rendering a 3d text

CallChannel

Draws the ObjectData with the current material, current camera, current world matrix and current lights.

Remarks

For instructions on the use of the texture coordinate matrices look at 3D ObjectData.

Tips

This channel does not support multiple lines. If you want multiple lines you need to create multiple text objects.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


3DTextFromTexture - Quest3D

3DTextFromTexture

Contents

  • 1 3DTextFromTexture
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

3DTextFromTexture

General

Converts a multi line text to a 2D mesh.

Children

  1. Text - Text
    • Text to convert.
  2. Character Spacing - Value
    • Space between each character.
  3. Line Height - Value
    • Space between each line.
  4. Texture - Texture
    • Texture with font that is also linked to the surface

Description

Example of the texture font output

This channel creates a mesh from a text. The result is a mesh build up out of 2D squares. Each square is a piece of the texture you use for rendering this object. To see the text you must link the correct texture to the surface you are using for the text object. You can link two spacing values to this channel. One defines the space between each letter the other the space between the lines.

Example of drawing text with a texture font.

The last child is the texture you want to use. Although this channel does not need a texture you need to link it so the dialog can find the texture you want to use. If you do not link a texture to this channel the font editor will refuse to start

  • Using the font editor

You can start the font editor by double clicking on the channel in the Channel Graph. The following dialog will pop up.

The Texture Font editor.

The dialog allows the rest of the editor to run in the background. This means that you can preview the font you are editing in the actual scene. Once you have completed a font you can save it. If you save it in the template dir it's very easy to use the font next time you need it.

Here's a map of all the controls of the font editor:

Font Editor controls map.

1.Texture window

This window display the texture you are using for the font. It also displays the character you are editing as a white rectangle. The previous and the next character are shown as blue rectangles. You can quickly define a new rectangle by dragging a rectangle with your mouse.

2.Preview window

You can preview your font in this window. You can also use any of the editor 3D windows to view your font. The editor draws the font in the background. This way you can view your font in the actual scene.

3.Character to Edit

This box shows the character you are editting now. You can type a new character here if you want to edit another one.

4.Prev Character

Go to the previous character.

5.Next Character

Go to the next character.

6.Width multiplier

This value specifies the width of the current character.

7.Height multiplier

This value specifies the height of the current character.

8.Height Offset

This value moves the character up or down.

9.Pixel resolution width

This specifies the width resolution of the source image.

10.Pixel resolution Height

This specifies the height resolution of the source image.

11.String Uppercase

If this box is checked the text is converted to uppercase.

12.Top

Top value of character rectangle.

13.Left

Left Value of character rectangle.

14.Width

Width value of character rectangle

15.Height

Height value of character rectangle

16.Arrow Buttons

You can use these buttons to add or subtract one pixel from the rectangle values.

CallChannel

Will render the stored object data with the current material, current camera, current world matrix and current lights to the backbuffer.

Applications

This channel is used for displaying lots of text or colorful bitmap text.

Tips

  • You can use alpha blending to create stunning effects.
  • You can change the spacing values dynamically to create an interesting effect.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


SDK/Channels/A3d Channel - Quest3D

SDK/Channels/A3d Channel

< SDK | Channels(Redirected from A3d Channel)
Jump to: navigation, search

Class Information

Class name: A3d_Channel

Header file: A3d_Channels.h

Library file: highpoly.lib

Methods

CallChannel | This function is called by the Quest3D Engine when a channel is called
GetChannelInterfaceType | Retrieve the interface type of the current channel
GetChild | Returns a pointer to a linked child channel
GetChildFromLinkPosition | Retrieve the pointer of a channel that is linked as a child based on the initial child link position and number of children linked to that initial child link position.
GetChildFromLinkGuid | Retrieve a pointer to a child channel of a certain type
GetChildCount | Return the number of child link positions
GetChildLinkPositionCount | Retrieve the number of children that are linked to the given initial child link position
GetChildTypeCount | Retrieve the number of children linked with the given GUID
SetChild | Create a link to one of the child link position
RemoveChild | Remove the link to a child
RemoveChildren | Remove all links to other channels (children)
SetChildCreationCount | Clear all child link positions
SetChildCreateType | Create a child link position
OneTimeInitialize | Called after constructor but before loading
DoEvent | Called by the core engine event system when an event has occurred
GetChannelType | Retrieves type setting of a channel
SaveChannel | Save custom channel data into the channel group
LoadChannel | Load custom channel data from a channel group
GetChannelIDIndexNr | Retrieve the index number of a channel in a channel group
GetChannelGroup | Retrieve the channel group class the channel is part of
SetChannelName | Change the name of the channel
GetChannelName | Retrieve the name of the channel
SetChannelInterfaceType | Change the interface type of the channel
GetChannelFromChannel | To be documented
GetTimeStamp | Return the time stamp of the channel
SetTimeStamp | Time stamp the channel
DoDependencyInit | Add a dependency for this channel
AddChannelGuidDepend | Add a channel dependency to the list of dependencies
AddDLLDepend | Add a third party file dependency to the list of dependencies
CheckRenderCount | Check if the channel has already been used this tree count

One Level Up - Channels

Back to Main Index


SDK/Channels/A3d Channel - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/A3d Channel

From Quest3D

< SDK | Channels
Jump to: navigation, search

Class Information

Class name: A3d_Channel

Header file: A3d_Channels.h

Library file: highpoly.lib

Methods

CallChannel | This function is called by the Quest3D Engine when a channel is called
GetChannelInterfaceType | Retrieve the interface type of the current channel
GetChild | Returns a pointer to a linked child channel
GetChildFromLinkPosition | Retrieve the pointer of a channel that is linked as a child based on the initial child link position and number of children linked to that initial child link position.
GetChildFromLinkGuid | Retrieve a pointer to a child channel of a certain type
GetChildCount | Return the number of child link positions
GetChildLinkPositionCount | Retrieve the number of children that are linked to the given initial child link position
GetChildTypeCount | Retrieve the number of children linked with the given GUID
SetChild | Create a link to one of the child link position
RemoveChild | Remove the link to a child
RemoveChildren | Remove all links to other channels (children)
SetChildCreationCount | Clear all child link positions
SetChildCreateType | Create a child link position
OneTimeInitialize | Called after constructor but before loading
DoEvent | Called by the core engine event system when an event has occurred
GetChannelType | Retrieves type setting of a channel
SaveChannel | Save custom channel data into the channel group
LoadChannel | Load custom channel data from a channel group
GetChannelIDIndexNr | Retrieve the index number of a channel in a channel group
GetChannelGroup | Retrieve the channel group class the channel is part of
SetChannelName | Change the name of the channel
GetChannelName | Retrieve the name of the channel
SetChannelInterfaceType | Change the interface type of the channel
GetChannelFromChannel | To be documented
GetTimeStamp | Return the time stamp of the channel
SetTimeStamp | Time stamp the channel
DoDependencyInit | Add a dependency for this channel
AddChannelGuidDepend | Add a channel dependency to the list of dependencies
AddDLLDepend | Add a third party file dependency to the list of dependencies
CheckRenderCount | Check if the channel has already been used this tree count

One Level Up - Channels

Back to Main Index


SDK/Channels/A3dFileLoader - Quest3D

SDK/Channels/A3dFileLoader

< SDK | Channels(Redirected from A3dFileLoader)
Jump to: navigation, search

Class Information

Class name: A3dFileLoader

Header file: A3d_EngineInterface.h

Library file: highpoly.lib

Methods

GetInfoIfTag | Check whether the current position in the file is a certain tag
CopyTagDataToPointer | This function will copy the data following the last tag into the given pointer.

See Also

Loading and Saving

One Level Up - Channels

Back to Main Index


SDK/Channels/A3dFileLoader - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/A3dFileLoader

From Quest3D

< SDK | Channels
Jump to: navigation, search

Class Information

Class name: A3dFileLoader

Header file: A3d_EngineInterface.h

Library file: highpoly.lib

Methods

GetInfoIfTag | Check whether the current position in the file is a certain tag
CopyTagDataToPointer | This function will copy the data following the last tag into the given pointer.

See Also

Loading and Saving

One Level Up - Channels

Back to Main Index


SDK/Channels/A3dFileSaver - Quest3D

SDK/Channels/A3dFileSaver

< SDK | Channels(Redirected from A3dFileSaver)
Jump to: navigation, search

Class Information

Class name: A3dFileSaver

Header file: A3d_EngineInterface.h

Library file: highpoly.lib

Methods

SaveTag | Save a four character unique tag
SaveBlockSize | Save the size of the data that is about to be saved
SaveDataToFile | Save an amount of data.

See Also

Loading and Saving

One Level Up - Channels

Back to Main Index


SDK/Channels/A3dFileSaver - Quest3D

SDK/Channels/A3dFileSaver

< SDK | Channels
Jump to: navigation, search

Class Information

Class name: A3dFileSaver

Header file: A3d_EngineInterface.h

Library file: highpoly.lib

Methods

SaveTag | Save a four character unique tag
SaveBlockSize | Save the size of the data that is about to be saved
SaveDataToFile | Save an amount of data.

See Also

Loading and Saving

One Level Up - Channels

Back to Main Index


ActiveX - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ActiveX

From Quest3D

Jump to: navigation, search

Contents

  • 1 ActiveX
    • 1.1 Properties
    • 1.2 Methods
      • 1.2.1 SetChannelValue
      • 1.2.2 SetChannelText
      • 1.2.3 ChannelValue
      • 1.2.4 ChannelText
    • 1.3 ActiveX Data channel
    • 1.4 Events
  • 2 See Also
  • 3 External links

ActiveX

The ActiveX control of Quest3D allows you to run Quest3D project in a large number of other programs. The program needs to support ActiveX controls. Such a program is an ActiveX “container”. Here are some examples of applications that support ActiveX controls:

  • Microsoft PowerPoint - VBA
  • Microsoft Visual Basic
  • Borland Delphi
  • Internet Browser
  • Macromedia Director
  • Macromedia Flash

All containers must allow the ActiveX control to use a window. With many applications this is only possible in run-time and not in design-time.

Properties

The Quest3D ActiveX control has a number of properties you can change. Here is a list of these properties and how they function:

Methods

There are a number of methods (functions) that you can use in the ActiveX control to control a Quest3D project. These functions must be used in combination with the “ActiveX Data” channel.

SetChannelValue

SetChannelValue(BSTR PoolName, BSTR ChannelName, float NewValue);

Change the value of the “Value” channel named “ChannelName” in the pool with the given “PoolName”. The “NewValue” channel will be set as the new value of the channel.

SetChannelText

SetChannelText(BSTR PoolName, BSTR ChannelName, BSTR NewText);

Change the text of the “Text” channel named “ChannelName” in the pool with the given “PoolName”. The “NewText” channel will be set as the new text of the channel.

ChannelValue

float ChannelValue = ChannelValue(BSTR PoolName, BSTR ChannelName);

This method returns the value of the “Value” channel in the pool with the given “PoolName”. The channel must have the name set in “ChannelName”.

ChannelText

BSTR ChannelText = ChannelText(BSTR PoolName, BSTR ChannelName);

This method returns the content of the “Text” channel in the pool with the given “PoolName”. The channel must have the name set in “ChannelName”.

ActiveX Data channel

Channels need to be linked to an “ActiveX Data” channel before they can be accessed. This is done for security reasons. Make sure you use the exact pool name and channeln ame.

In addition, the “ActiveX Data” channel must be called before channels can be changed.

If the “ActiveX Data” channel is not called, the channels will not be changed when the “SetChannelValue” or “SetChannelText” methods are used. The same goes up for retrieving data. This picture shows a simple scene where the “Public Text” and “Public Value” channels are available for the ActiveX control to access and change.

Events

The ActiveX control also has a single event that can be triggered from inside Quest3D. When the “ActiveX Event” channel is called, it will trigger the “OnEvent” method of the ActiveX control.

In this picture you can see a very basic structure that will trigger an event in the ActiveX control when the user presses the space bar. It is recommended that the “ActiveX Event” channel is not called too often, because Quest3D can call the events much faster than the container is able to handle. Using the “Trigger” channel like in this example is recommended.

The handling of ActiveX events is different for every container. You can find a Microsoft Internet Explorer example using JavaScript in the “Examples\Advanced\ActiveX” folder of your Quest3D installation folder.

See Also

  • Avoiding automatic updates of the ActiveX control
  • Publishing Quest3D Projects

External links

  • ActiveX in Wikipedia
  • Introduction to ActiveX Controls at the Microsoft Website


ActiveX Data - Quest3D

ActiveX Data

Contents

  • 1 ActiveX Data
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Get Base type
    • 1.5 Remarks

ActiveX Data

Children

  1. All Types Channel – Text or value channel(s) to make accessible.

Description

Make Value or Text channels accessible through the ActiveX control.

CallChannel

Calling this channel will update the children with values set by the ActiveX container.

Get Base type

This channel can only be called.

Remarks

Please check the Quest3D Tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | ActiveX


ActiveX Event - Quest3D

ActiveX Event

Contents

  • 1 ActiveX Event
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Get Base type
    • 1.5 Remarks

ActiveX Event

Children

none

Description

This channel will trigger an event in the ActiveX container that is running the current Quest3D project. An ActiveX container can be Internet Explorer, Visual Basic or any other program that allows ActiveX controls to be added. The ActiveX control has an internal method that is triggered when this channel is called.

CallChannel

Calling this channel will trigger an event in the ActiveX control.

Get Base type

This channel can only be called.

Remarks

Please check the Quest3D Tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | ActiveX


AddChannelGuidDepend - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

AddChannelGuidDepend

From Quest3D

Jump to: navigation, search

Function definition

void AddChannelGuidDepend(GUID guid, A3d_List* currentDependList);

Description

Add a channel dependency to another Channel to the list of dependencies. This is usually needed for publishing dynamically loaded Channels.

Parameters

Name | Description
guid | The GUID of the channel that should be added to the list of dependencies
dependList | A pointer to a A3d_List class that holds all dependencies of the channel group

Remarks

If you would like to add a 3rd party DLL file you can use the AddDLLDepend function. Before publishing, add the 3rd party DLL file to <YourQuest3DDirectory>/3rd. You will not need to add dependencies of the base class or used children. These are done automatically. Use this function only in the overloaded DoDependencyInit function of a channel.

Do not overload this function.

Example

In this example you see the overloaded DoDependencyInit function where a channel and a third party DLL file is added to the dependency list.

void Aco_Example4::DoDependencyInit(A3d_List* currentDependList) {
  // The libmySQL.dll file is needed for this channel to operate
  AddDLLDepend("libmySQL.dll", currentDependList);
  // The DirectGraphics channel is needed for this channel to operate
  AddChannelGuidDepend(DIRECTGRAPHICS_GUID, currentDependList);
}

Related Documentation

DoDependencyInit AddDLLDepend

One Level Up - A3d Channel

Back to Main Index


AddChannelToEvent - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

AddChannelToEvent

From Quest3D

Jump to: navigation, search

Function definition

void AddChannelToEvent( A3d_Channel* channel, int eventNr );

Description

Add a channel to the event system of the engine.

Parameters

Name | Description
channel | Pointer of the channel to add to the event system in the engine.
eventNr | Integer value that will identify the event that should be added.

Remarks

The core engine is able to monitor certain events. When it is needed that these events are monitored channels are able to add itself using this function to the event system in the core engine. The engine will then monitor and call the correct channels when a certain message is received. In a channel the DoEvent function can be overloaded. This function is used by the engine when a event is received.

A channel should remove itself from the event system by using the RemoveChannelFromEvent function.

The eventNr parameter can be one of the following:

Name | Description
EV_INCREASEENGINETICKCOUNT | The tree count is increased
EV_WINDOWMESSAGE | A windows message is received

Related Documentation

RemoveChannelFromEvent, DoEvent

One Level Up - EngineInterface

Back to Main Index


AddDLLDepend - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

AddDLLDepend

From Quest3D

Jump to: navigation, search

Function definition

void AddDLLDepend(const char* dllName,A3d_List* currentDependList);

Description

Add a DLL channel dependency to to the list of dependencies.

Parameters

Name | Description
dllName | NULL terminated string that holds a filename of a DLL file. Do not use paths in this string, all DLL dependencies are stored in the 3rd folder of you Quest3D installation.
dependList | A pointer to a A3d_List class that holds all dependencies of the channel group

Remarks

This function is often needed when a channel is created that holds a library file that is part of another SDK. When such a library is linked you might need a DLL file as well before the channel will operate. Such DLL files can be placed in the "3rd" directory in your Quest3D installation directory. When publishing projects, these DLL's are automatically included when this channel is used correctly.

Use this function in the overloaded DoDependencyInit function of a channel.

If you need to add a dependency of a channel please use the AddChannelGuidDepend function.

Do not overload this function.

Example

In this example you see the overloaded DoDependencyInit function where a channel and a third party DLL file is added to the dependency list.

void Aco_Example4::DoDependencyInit(A3d_List* currentDependList) {
// The libmySQL.dll file is needed for this channel to operate
AddDLLDepend("libmySQL.dll", currentDependList);
// The DirectGraphics channel is needed for this channel to operate
AddChannelGuidDepend(DIRECTGRAPHICS_GUID, currentDependList);
}

Related Documentation

DoDependencyInit AddChannelGuidDepend

One Level Up - A3d Channel

Back to Main Index


Advanced Motion Blender - Quest3D

Advanced Motion Blender

Contents

  • 1 Advanced Motion Blender
    • 1.1 General Description
    • 1.2 Childeren
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Application

Advanced Motion Blender

General Description

Missing Documentation.
No Comments

Childeren

  1. Time Scale Factor - Value
    • Sets the Time Scale Factor
  2. Advanced Motion Data - Advanced Motion Data
    • Input child for the Advanced Motion Data

Description

Missing Documentation.
No Comments

CallChannel

Missing Documentation.
No Comments

Application

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | New in version 3.5 | Incomplete


Advanced Motion Data - Quest3D

Advanced Motion Data

Contents

  • 1 Advanced Motion Data
    • 1.1 General Description
    • 1.2 Childeren
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Application

Advanced Motion Data

General Description

Childeren

  1. Motion Sets - MotionSet
    • Unlimited number of MotionSets can be linked

Description

Missing Documentation.
No Comments

CallChannel

Missing Documentation.
No Comments

Application

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | New in version 3.5 | Incomplete


Advanced Motion Data Combiner - Quest3D

Advanced Motion Data Combiner

Contents

  • 1 Advanced Motion Data Combiner
    • 1.1 General Description
    • 1.2 Childeren
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Application

Advanced Motion Data Combiner

General Description

Childeren

  1. Advanced Motion Data - Advanced Motion Data
    • Unlimited number of Advanced Motion Datas can be linked

Description

Missing Documentation.
No Comments

CallChannel

Missing Documentation.
No Comments

Application

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | New in version 3.5 | Incomplete


Tutorials/Advanced Motion Tutorial - Quest3D

Tutorials/Advanced Motion Tutorial

< Tutorials(Redirected from Advanced Motion Tutorial)
Jump to: navigation, search

Contents

  • 1 Advanced Moton Tutorial
    • 1.1 A. Basic Setup
      • 1.1.1 Set up a scene
      • 1.1.2 Import motions
      • 1.1.3 Add Motions
      • 1.1.4 Setting up triggers
      • 1.1.5 Playing the Motions
      • 1.1.6 Stopping motions
    • 1.2 Sample
  • 2 See Also

Advanced Moton Tutorial

by Michaël Samyn

A. Basic Setup

Set up a scene

  • Import an X file with an animated character “as indexed character”.
  • Drag in the Simple Scene template and replace the 3D Objects with your character object.
  • Rightclick on Start3DScene and set it “as start channel”.
  • Opening an Animation 3D View should display your character.

Import motions

  • Remove the MotionSet and replace it by an Advanced Motion Blender.
  • You can find this channel in the Channel List tab next to the Templates.
  • Connect an Advanced Motion Data as a child to the Advanced Motion Blender.
  • Double click the Advanced Motion Data and click on the Set Reference Motion button.
  • Select the X file you had already imported to get the SkinnedCharacter.
  • This X file needs to have key frames on all bones that you may want to animate.
  • Click the Add Motion Set from X File button.
  • Choose an X file. Its name will be added to the Motion Sets list.
  • You can change the name in the Motion Set name text box.
  • Repeat this to import a few more motions.

Add Motions

  • Select each imported motion from the Motion Sets list and click the Add Motion-Bone Set Group from selected Motion Set button.
  • In the Motion-Bone Set Groups panel, select each motion and configure it.
  • Check the Loop Motion-Dummy Group checkbox for animations that need to loop.
  • Set the Priority value: higher numbered motions will play over lower numbered ones.

Setting up triggers

  • Drag a Trigger and a UserInput into the channel group for each motion.
  • Connect each UserInput channel to a Trigger channel and connect all Trigger channels to the Start3DScene channel via a Channelcaller.
  • Doubleclick the UserInput channels to configure them with Keyboard keys 1, 2, 3.
  • Drag in an Advanced Motion Command for each of the Triggers and connect each to a trigger.
  • Make a shortcut of your Advanced Motion Blender channel for each of your Advanced Motion Command channels and connect them to the latter.
  • Drag in three Value channels and connect each to an Advanced Motion Command.
  • Double click each value and fill in a number
  • Set the first Value to 0, the second to 1, the third to 2, etcetera.

Playing the Motions

  • Switch to Run Mode.
  • Press 1 to play the first motion. 2 To Play the second. Etcetera.
  • Doubleclick the Advanced Motion Blender channel: you should see all available motions in the lower list and all currently playing motions in the upper list.

Stopping motions

  • Set up a trigger as in point 4.
  • Doubleclick the Advanced Motion Command.
  • Choose “Remove instruction from list” and click OK.
  • Press the key corresponding to the trigger.

Sample

Advanced Motion sample A

See Also

Advanced Motion Tutorial 2

One Level Up - Articles

Back to Main Index

Category: Tutorials


Tutorials/Advanced Motion Tutorial - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorials/Advanced Motion Tutorial

From Quest3D

< Tutorials
Jump to: navigation, search

Contents

  • 1 Advanced Moton Tutorial
    • 1.1 A. Basic Setup
      • 1.1.1 Set up a scene
      • 1.1.2 Import motions
      • 1.1.3 Add Motions
      • 1.1.4 Setting up triggers
      • 1.1.5 Playing the Motions
      • 1.1.6 Stopping motions
    • 1.2 Sample
  • 2 See Also

Advanced Moton Tutorial

by Michaël Samyn

A. Basic Setup

Set up a scene

  • Import an X file with an animated character “as indexed character”.
  • Drag in the Simple Scene template and replace the 3D Objects with your character object.
  • Rightclick on Start3DScene and set it “as start channel”.
  • Opening an Animation 3D View should display your character.

Import motions

  • Remove the MotionSet and replace it by an Advanced Motion Blender.
  • You can find this channel in the Channel List tab next to the Templates.
  • Connect an Advanced Motion Data as a child to the Advanced Motion Blender.
  • Double click the Advanced Motion Data and click on the Set Reference Motion button.
  • Select the X file you had already imported to get the SkinnedCharacter.
  • This X file needs to have key frames on all bones that you may want to animate.
  • Click the Add Motion Set from X File button.
  • Choose an X file. Its name will be added to the Motion Sets list.
  • You can change the name in the Motion Set name text box.
  • Repeat this to import a few more motions.

Add Motions

  • Select each imported motion from the Motion Sets list and click the Add Motion-Bone Set Group from selected Motion Set button.
  • In the Motion-Bone Set Groups panel, select each motion and configure it.
  • Check the Loop Motion-Dummy Group checkbox for animations that need to loop.
  • Set the Priority value: higher numbered motions will play over lower numbered ones.

Setting up triggers

  • Drag a Trigger and a UserInput into the channel group for each motion.
  • Connect each UserInput channel to a Trigger channel and connect all Trigger channels to the Start3DScene channel via a Channelcaller.
  • Doubleclick the UserInput channels to configure them with Keyboard keys 1, 2, 3.
  • Drag in an Advanced Motion Command for each of the Triggers and connect each to a trigger.
  • Make a shortcut of your Advanced Motion Blender channel for each of your Advanced Motion Command channels and connect them to the latter.
  • Drag in three Value channels and connect each to an Advanced Motion Command.
  • Double click each value and fill in a number
  • Set the first Value to 0, the second to 1, the third to 2, etcetera.

Playing the Motions

  • Switch to Run Mode.
  • Press 1 to play the first motion. 2 To Play the second. Etcetera.
  • Doubleclick the Advanced Motion Blender channel: you should see all available motions in the lower list and all currently playing motions in the upper list.

Stopping motions

  • Set up a trigger as in point 4.
  • Doubleclick the Advanced Motion Command.
  • Choose “Remove instruction from list” and click OK.
  • Press the key corresponding to the trigger.

Sample

Advanced Motion sample A

See Also

Advanced Motion Tutorial 2

One Level Up - Articles

Back to Main Index

Category: Tutorials


Tutorials/Advanced Motion Tutorial 2 - Quest3D

Tutorials/Advanced Motion Tutorial 2

< Tutorials(Redirected from Advanced Motion Tutorial 2)
Jump to: navigation, search

Contents

  • 1 Advanced Motion Tutorial 2
    • 1.1 B. Cropping and Fading
      • 1.1.1 Set up a scene with a character
      • 1.1.2 Cropping Motions
      • 1.1.3 Playing Motions with Fade
      • 1.1.4 Removing Motions with Fade
      • 1.1.5 Crop and fade with the Looping Envelope
    • 1.2 Samples
  • 2 See Also

Advanced Motion Tutorial 2

by Michaël Samyn (28 July 2006)

B. Cropping and Fading

Set up a scene with a character

  • Import a Skinned Character (see Tutorial A)
  • Attach a Motion Blender to it (see Tutorial A)
  • Add a Motion Set from an X File (see Tutorial A)

Cropping Motions

  • Double click the Advanced Motion Data to open the Advanced Motion Data editor.
  • Select one of the Motion Sets (top left list) and click on the top right button: “Create Motion Set Subset”.

  • Drag the slider or type in numbers to set the start and end frame.
  • When you click OK a new Motion Set will be added to the Motion Sets list. This is a cropped version of your original motion.
  • Select the new Motion Set and click the “Add Motion-Bone Set Group from selected Motion Set” button to add it to the Motion-Bone Set Groups list. Set it to loop and give it a priority of 0.
  • Close the Advanced Motion Data editor and play the new motion with an “Add instruction to list” Advanced Motion Command called by a OneTime (see Tutorial A).

Playing Motions with Fade

  • Double click the Advanced Motion Data to open the Advanced Motion Data Editor.
  • Select your original Motion Set and create a new subset (see part 2).
  • Add it to the Motion-Bone Set Groups, set it to Loop and give it a priority of 1 (see Tutorial A).
  • Close the Advanced Motion Data Editor.

  • Make a trigger with a UserInput channel as first Value child.
  • Add a new Advanced Motion Command channel and connect it to the second child link of the Trigger. Double click it and select “Add instruction to list with fadein”.
  • Connect the Advanced Motion Blender to the first child connector of the Advanced Motion Command, a Value with the number of the Motion-Bone Set you want to play to the second and to the third a Value with the amount of milliseconds you want the transition between this motion and the previous one to last.
  • Trigger the Advanced Motion Command and the second motion will start playing with a smooth transition.

Removing Motions with Fade

  • Copy and paste the Trigger logic from part 3, change the Value to Check child of the Trigger and connect the Advanced Motion Blender to the Advanced Motion Command.
  • Select “Remove instruction from list with fadeout” in the Advanced Motion Command Interface.
  • Trigger the Advanced Motion Command and the second motion will disappear with a smooth transition.

Crop and fade with the Looping Envelope

  • Add a new Motion Set from an X File with three parts: beginning, middle and end. The beginning will be played when the motion starts playing, the middle will be continuously looped and the end will be played when the motion is removed.

  • Double click the new Motion Set in the Motion Sets list to open the Motionset editor.
  • Zoom and rotate the preview on the right to get a good look of your character’s skeleton.
  • Drag the play head in the timeline under the preview to the frame where the middle part of the motion starts and click the “Set Looping Start” button.
  • Now drag the play head to the end of the middle part and click the “Set Looping End” button.
  • There should be four square nodes in the diagram under the timeline now.
  • Drag the first one and the last one all the way down. This creates fade-in and fade-out transitions.
  • Adjust the tension with the slider underneath and click OK.
  • Add the Motion Set to the Motion-Bone Set Groups list, set it to loop and give it a priority of 2. Close the Advanced Motion Data Editor.
  • Make triggers to add and remove this new motion.
  • In the current version of Quest3D (3.5.4), combining this envelope fading with fading through an Advanced Motion Command doesn’t work as expected. So use normal Add and Remove commands for now.

Samples

Advanced Motion sample B

See Also

Advanced Motion Tutorial 1

One Level Up - Articles

Back to Main Index

Category: Tutorials


Tutorials/Advanced Motion Tutorial 2 - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorials/Advanced Motion Tutorial 2

From Quest3D

< Tutorials
Jump to: navigation, search

Contents

  • 1 Advanced Motion Tutorial 2
    • 1.1 B. Cropping and Fading
      • 1.1.1 Set up a scene with a character
      • 1.1.2 Cropping Motions
      • 1.1.3 Playing Motions with Fade
      • 1.1.4 Removing Motions with Fade
      • 1.1.5 Crop and fade with the Looping Envelope
    • 1.2 Samples
  • 2 See Also

Advanced Motion Tutorial 2

by Michaël Samyn (28 July 2006)

B. Cropping and Fading

Set up a scene with a character

  • Import a Skinned Character (see Tutorial A)
  • Attach a Motion Blender to it (see Tutorial A)
  • Add a Motion Set from an X File (see Tutorial A)

Cropping Motions

  • Double click the Advanced Motion Data to open the Advanced Motion Data editor.
  • Select one of the Motion Sets (top left list) and click on the top right button: “Create Motion Set Subset”.

  • Drag the slider or type in numbers to set the start and end frame.
  • When you click OK a new Motion Set will be added to the Motion Sets list. This is a cropped version of your original motion.
  • Select the new Motion Set and click the “Add Motion-Bone Set Group from selected Motion Set” button to add it to the Motion-Bone Set Groups list. Set it to loop and give it a priority of 0.
  • Close the Advanced Motion Data editor and play the new motion with an “Add instruction to list” Advanced Motion Command called by a OneTime (see Tutorial A).

Playing Motions with Fade

  • Double click the Advanced Motion Data to open the Advanced Motion Data Editor.
  • Select your original Motion Set and create a new subset (see part 2).
  • Add it to the Motion-Bone Set Groups, set it to Loop and give it a priority of 1 (see Tutorial A).
  • Close the Advanced Motion Data Editor.

  • Make a trigger with a UserInput channel as first Value child.
  • Add a new Advanced Motion Command channel and connect it to the second child link of the Trigger. Double click it and select “Add instruction to list with fadein”.
  • Connect the Advanced Motion Blender to the first child connector of the Advanced Motion Command, a Value with the number of the Motion-Bone Set you want to play to the second and to the third a Value with the amount of milliseconds you want the transition between this motion and the previous one to last.
  • Trigger the Advanced Motion Command and the second motion will start playing with a smooth transition.

Removing Motions with Fade

  • Copy and paste the Trigger logic from part 3, change the Value to Check child of the Trigger and connect the Advanced Motion Blender to the Advanced Motion Command.
  • Select “Remove instruction from list with fadeout” in the Advanced Motion Command Interface.
  • Trigger the Advanced Motion Command and the second motion will disappear with a smooth transition.

Crop and fade with the Looping Envelope

  • Add a new Motion Set from an X File with three parts: beginning, middle and end. The beginning will be played when the motion starts playing, the middle will be continuously looped and the end will be played when the motion is removed.

  • Double click the new Motion Set in the Motion Sets list to open the Motionset editor.
  • Zoom and rotate the preview on the right to get a good look of your character’s skeleton.
  • Drag the play head in the timeline under the preview to the frame where the middle part of the motion starts and click the “Set Looping Start” button.
  • Now drag the play head to the end of the middle part and click the “Set Looping End” button.
  • There should be four square nodes in the diagram under the timeline now.
  • Drag the first one and the last one all the way down. This creates fade-in and fade-out transitions.
  • Adjust the tension with the slider underneath and click OK.
  • Add the Motion Set to the Motion-Bone Set Groups list, set it to loop and give it a priority of 2. Close the Advanced Motion Data Editor.
  • Make triggers to add and remove this new motion.
  • In the current version of Quest3D (3.5.4), combining this envelope fading with fading through an Advanced Motion Command doesn’t work as expected. So use normal Add and Remove commands for now.

Samples

Advanced Motion sample B

See Also

Advanced Motion Tutorial 1

One Level Up - Articles

Back to Main Index

Category: Tutorials


AdvancedMotionCommand - Quest3D

AdvancedMotionCommand

Contents

  • 1 AdvancedMotionCommand
    • 1.1 General Description
    • 1.2 Childeren
    • 1.3 Description
      • 1.3.1 Add Instruction to List
      • 1.3.2 Add Instruction to list with Fadein
      • 1.3.3 Remove Instruction from List
      • 1.3.4 Jump to a Specified Frame
      • 1.3.5 Immediately sey the Current Animation
      • 1.3.6 Remove Instruction from List with Fadeout
      • 1.3.7 Set the Blending Modifier for an Active Animation
      • 1.3.8 Instantly Remove an Instruction
      • 1.3.9 Set the Timing Modifier for an Active Animation
    • 1.4 CallChannel
    • 1.5 Application

AdvancedMotionCommand

General Description

Missing Documentation.
No Comments

Childeren

  1. Advanced Motion Blender - Advanced Motion Blender
    • The Advanced Motion Blender that you wand to send the command to.
  1. Different Types - All Types Channel
    • 'Channel type to be linked depending on the selected command.

Description

Add Instruction to List

Missing Documentation.
No Comments

Add Instruction to list with Fadein

Missing Documentation.
No Comments

Remove Instruction from List

Missing Documentation.
No Comments

Jump to a Specified Frame

Missing Documentation.
No Comments

Immediately sey the Current Animation

Missing Documentation.
No Comments

Remove Instruction from List with Fadeout

Missing Documentation.
No Comments

Set the Blending Modifier for an Active Animation

Missing Documentation.
No Comments

Instantly Remove an Instruction

Missing Documentation.
No Comments

Set the Timing Modifier for an Active Animation

Missing Documentation.
No Comments

CallChannel

Missing Documentation.
No Comments

Application

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Commands and Settings | New in version 3.5 | Incomplete


AdvancedMotionInfoValue - Quest3D

AdvancedMotionInfoValue

Contents

  • 1 AdvancedMotionInfoValue
    • 1.1 General Description
    • 1.2 Childeren
    • 1.3 Description
      • 1.3.1 Get Current Animation Time
      • 1.3.2 Check whether a Motion-Dummy Group is set ...
      • 1.3.3 Check if a Motion-Dummy Group is currently ....
      • 1.3.4 Check whether a Motion-Dummy Group is currently ...
    • 1.4 CallChannel
    • 1.5 Application

AdvancedMotionInfoValue

General Description

Missing Documentation.
No Comments

Childeren

  1. Advanced Motion Data - MotionSet
  2. Different Types - All Types Channel

Description

Get Current Animation Time

Missing Documentation.
No Comments

Check whether a Motion-Dummy Group is set ...

Missing Documentation.
No Comments

Check if a Motion-Dummy Group is currently ....

Missing Documentation.
No Comments

Check whether a Motion-Dummy Group is currently ...

Missing Documentation.
No Comments

CallChannel

Missing Documentation.
No Comments

Application

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | New in version 3.5 | Incomplete


All Types Channel - Quest3D

All Types Channel

Contents

  • 1 All Types Channel
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Get Base type
    • 1.5 Remarks

All Types Channel

Children

none

Description

This channel can be used to create a parameter for a Public Channel which is of the All Types Channel type.

CallChannel

Calling this channel when it is not a parameter channel has no effect.

Get Base type

When the channel is a parameter channel, getting the Base type will result in returning the Base type information of the attached channel to the parent channel.

Remarks

Always convert this channel into a parameter for it to work correctly.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


Reference Manual/Getting Started/Basics/Animation - Quest3D

Reference Manual/Getting Started/Basics/Animation

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Animation
    • 1.1 General
    • 1.2 Motions
    • 1.3 Channels
    • 1.4 Envelopes
    • 1.5 Timers
    • 1.6 Triggers

Animation

General

Quest3D has a rather unique animation system. For example you can use more than one timeline, use the mouse position as a timeline or you can use no timeline at all. Before you can start animating in Quest3D you need to understand a few basic concepts. These concepts are Motions, Channels, Envelopes, Timers and Triggers.

Motions

In Quest3D a motion is a matrix. You don’t need to know how a matrix works and what it is exactly. For now, just assume a matrix is a method for storing size, rotation and position in a convenient way. In most cases you will use a Motion as a motion. You can see that the base type of a motion is a matrix.

The motion accepts three vectors and two matrices as its children. The three vectors are the position, rotation and size of the motion. The other two child link positions are there to make a motion look at another motion and to ‘attach’ it to another motion. If a motion is attached (parented) to another motion it inherits the motion of the parent. Example: your hand has your forearm as parent so it inherits the motion of the forearm.

Sizing and moving is pretty straightforward. Each element in the vector represents the translation or scaling in the corresponding direction. Rotation is more difficult. The vector represents the heading, pitch and bank values. When you are nodding your head you are changing the heading angle of your head. If you are tilting your head you are changing its pitch angle. If you rotate an object along the z-axis you are changing its banking angle.

How Euler angles rotate an object.

Channels

The Quest3D concept grew out of the need to animate things more flexible and with less effort. The reason why a Quest3D channel is called a ‘channel’ is because they have their origin in a concept that is found in almost any professional animation package. With such an animation channel you can define relations between values. For example you can link the size of a muscle to the rotation of the elbow. This way the muscle grows as you bend the arm.

In Quest3D you can link almost anything to anything. In fact, you have to link things to get any results. The basics of all animation comes down to a timer at some point. A timer allows you to change values over time and the timer takes care of looping and makes sure the animation is frame rate independent.

Envelopes

One way to animate an object is to link its Y position to a timer. This way its Y position is 1.0 as the timer value is 1.0. This approach could work in some cases but in most cases you want more control. You could define an expression and put it between the timer and the Y position so you have more control over the position of the object at any point in time. Although it is theoretically possible to make up an expression for any motion you want to define it’s far from practical. This is why Quest3D uses the Envelope to animate most things.

The envelope editor

An envelope is simply a graph that holds an output value for each input value. By putting an Envelope between the timer and the Y position you can draw a graph for the Y position at any position in time. An envelope makes it easy for you because you don’t have to specify exactly what its value should be at any point. You just define a few key points and the envelope will fill in the gaps between these key frames.

How does an Envelope know how to fill the gaps between key frames? In Quest3D there are three methods for doing so: step, linear, and TCB. The step method simply uses the first key it finds before the current value. The linear method draws an imaginary line between keys and takes the value of the line at the position of the input. The TCB method is the most advanced method. The TCB method draws an imaginary smooth curve trough the key values.

Step interpolation(no interpolation)

Lineair interpolation

TCB interpolation

The user can specify a T, C and B value at each key to define the behavior of the curve at the key. All parameters range between –1 and 1. The tension defines the ‘velocity’ at the key, the continuity allows you to make the value ‘bounce’ at the key and the bias allows you to shift the ‘weight’ of the curve from one side to the other. The benefit of using the TCB method is that you can use the same TCB values for each element at a key. Otherwise you would have to specify values for the position, sizing and scaling. That’s a total of 9x3=27 parameters at each key of a motion instead of 3 parameters. Another benefit is that a value of 0.0 for parameters delivers the desired effect in most cases.

If you link envelopes to a motion they define a motion path and other parameters of the motion trough time. Although the envelope is extremely useful to define a motion they can be used for many other purposes. An envelope can be used just like any other value. You can graph the velocity against the position of the mouse or you can use the envelope to graph the time against another timer this way you can go back and forward in time anyway you like. By using the Value Sliders you can easily animate the color of the sky over time.

If an envelope does not have an input value it uses the default timer as its input.

Timers

Very often you need some sort of time index to animate or trigger something. In real life you could take the number of seconds that has gone by from a certain point. In animation time is often measured in frames. This is because a frame represents single picture on a film. When you are animating in real-time 3d interactive applications there is no such thing as a frame. On fast computers a frame might take 1/100th of a second and on slow computers this can be ten times as long.

To make it easy Quest3D still uses frames. Each frame represents 1/25th of a second by default. This means that timers also work at 25 frames per second by default. If the timer has a value of 2.0 it means that 2/25th of a second have passed since the timer was started.

Structure of timers in Quest3D

How can you use a timer? In Quest3D all timers are globally available this means that you do not have to worry about groups and links between groups. To use a timer you need to make up a name for the timer. It is wise to pick a name that is likely to be unique because you do not want two separate timers to be treated as one.

There is always one timer that is always available. The name of the timer is ‘Default’. The unique property of the default timer is that you do not have to link it to Envelopes. If an envelope does not have a timer it uses the value of the default timer. To get the value of a timer you need to use a Timer Value. By double clicking on a timer value you can select one of the existing timers or you can create a new timer. The timerValue simply contains the value of the timer you configured in its dialog.

To make a timer run or to stop it you need to use the Timer Command. Just like the timerValue it has a dialog where you can select the name of the timer you want to control.

The TimerCommand Dialog

Some commands need a start or an end value. ‘Play & loop’ is an example of this because it loops the timer between the start and end value. You can execute the command by calling the timerCommand. Make sure you do not call the command each frame otherwise the timer will not play in some cases. To make sure you call the timerCommand only once you can use the Trigger or the OneTime. With the oneTime channel you can tell a timer to play at the start of the program and after that the timerCommand is not called anymore until you reset the oneTime.

In the animation section you can select a timer in the envelope slider bar. The slider shows the position in time of the selected timer. By pressing one of the play, stop next or previous buttons you can make the timer play or make it jump to a key of the envelopes.

You can use a timer value as any value so you are not restricted to use timers to control envelopes. You can use a timer to trigger a second timer or to trigger a sound for example. Timers an triggers are very often used together.

Triggers

A trigger is used to call a channel when a value passes certain value. You need to call the trigger each frame. If you do not call a trigger it does not check the value and it has no function.

Triggers are essential for channels that do not work if you call them each frame. Sound is a good example of this. If you call a sound each frame it is restarted each frame. This means that at 60fps you will only hear the first 60th of a second repeating. To overcome this you need to make sure that you call the sound only once. The trigger is ideal for this.

Let’s say you want to trigger a sound every 10 seconds. First you create a timerValue and a sound. Link both channels to the trigger and call the trigger each frame. You can now use the dialog of the trigger to specify at what time you want to trigger the sound. Play and loop the sound over a period of 10 seconds and you have a sound being played every 10 seconds.

The dialog of the trigger

The trigger has three modes. It can trigger every time the value passes the trigger value or it can trigger only in one of the two directions. You can select one of these three options in the dialog of the trigger.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


Reference Manual/Editor/Animation Section/Animation 3D View - Quest3D

Reference Manual/Editor/Animation Section/Animation 3D View

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Animation 3D View
    • 1.1 General
    • 1.2 View your project
    • 1.3 Context Menu
    • 1.4 Manipulate motions
    • 1.5 Show Helper Items
    • 1.6 Background Color
    • 1.7 Center View
    • 1.8 Different views
    • 1.9 Camera View
    • 1.10 Front View
    • 1.11 Orbit
    • 1.12 Side View
    • 1.13 Top View

Animation 3D View

General

This window has several functions. The primary function is to view your project and let you animate items.

View your project

Context Menu

You can set a number of properties of the 3D animation window using the "Menu" in the upper left corner of the window. If you on the work "Menu" you get a context menu with options, just like in the image above.

Manipulate motions

You can edit a Motion by selecting a light, camera or object in the Object List, Light List or Camera List.

If a motion is selected you can press the "Move" toolbar button., "Rotate" toolbar button or "Scale" toolbar button (see Animation Section for toolbar documentation). To see how you can manipulate the motion with your mouse see: Motion Values documentation.

If the motion is controlled by envelopes then the keys of the envelopes will appear in the Envelope Slider

Show Helper Items

Helper items are items that only show up in the editor and are not part of your project. An example of a helper object is the motion path. Through the "Menu" in the upper left corner you can turn on and off the helper items.

Background Color

You can change the backgroun color only if you have not used a correct render loop structure. If you use the Start3DScene channel or you have used a ClearScreen channel, then the background color will be set by these channels.

Center View

You can select "Center on selected" from the context menu. When you have selected the "Orbit" camera, this will be moved to the object you select in the Object List window. If you have set it to "On Selection", it will move every time you select another object, or you can select "Now" and move the camera to the object once.

Different views

When your project is published, it will always render your scene using the configured camera. In the editor however can render your project from several angles. Using the "Menu" in the upper left corner you can select a number of cameras. The "Camera" entry will change to your own cofigured camera(s). The "Orbit" camera will allow your scene from a editor-only camera so that you can move objects, cameras and lights.

Camera View

The camera view shows the scene trough the cameras you set up in your project. This is the only view that allows rendering trough several different views at the same time. This is done by using several 3D Render channels with different Camera channels. Using multiple cameras is useful for projecting a HUD on top of your existing scene. Don't forget to clear the z-buffer with the ClearScreen in z-buffer only mode between the two renders.

Another unique feature about this view is that this is the only view that displays fog.

Since this view uses the cameras in your scene this view can not be used if you do not use any cameras. In this case it will automatically use the same view as Perspective View.

An important difference between this view and the result in the viewer is that the editor clears the screen for you and presents the result. If you want to view your project in the viewer you must call a ClearScreen channel at the beginning of each frame and a Present at the end of each frame.

Front View

This view displays the view from the front. The front view displays the scene without perspective so it looks like all objects are flat.

  • Moving - SHIFT + Left mouse button or Middle mouse button
  • Zooming - SHIFT + Right mouse button or Mouse Wheel

You can move slower or faster by modifying the World Scale.

Orbit

The perspective view always looks at the same point, the "viewing center". You can move the viewing center, move the camera closer or orbit the viewing center.

You can move the viewing center by holding the SHIFT key and clicking with the mouse. Pressing the left mouse button lets you move the viewing center on the XZ plane by moving the mouse. You can move the viewing center up or down by pressing the right mouse button and moving the mouse. You can also move the viewing center in the XZ plane by pressing the middle mouse button and moving your mouse.

You can obit around the viewing center by holding the ALT key by and moving the mouse. Moving the mouse horizontally will rotate the camera from left to right. Moving the mouse up and down will move the camera up and down.

You can Zoom in and out by holding the ALT and the right mouse button. Moving up zooms in, moving down zooms out. You can also zoom by scrolling your mouse wheel.

Side View

This view displays the view from the side. The side view displays the scene without perspective so it looks like all objects are flat.

  • Moving - SHIFT + Left mouse button or Middle mouse button
  • Zooming - SHIFT + Right mouse button or Mouse Wheel

You can move slower or faster by modifying the World Scale.

Top View

This view displays the view from the top. The top view displays the scene without perspective so it looks like all objects are flat.

  • Moving - SHIFT + Left mouse button or Middle mouse button
  • Zooming - SHIFT + Right mouse button or Mouse Wheel

You can move slower or faster by modifying the World Scale.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Reference Manual/Editor/Animation Section - Quest3D

Reference Manual/Editor/Animation Section

< Reference Manual | Editor
Jump to: navigation, search

Contents

  • 1 Animation Section
    • 1.1 General
    • 1.2 1. Toolbar
    • 1.3 2. Run/Edit mode switch
    • 1.4 3. Section selection
    • 1.5 4. Edit tab panels
    • 1.6 5. 3D animation view
    • 1.7 6. Mouse mode
    • 1.8 7. Motion values
    • 1.9 8. Motion toolbar
    • 1.10 9. Motion slider
    • 1.11 10. Message Log

Animation Section

General

In this section of Quest3D you can animate, move and manipulate objects, cameras and lights. You are able to add time frames to animations and test interactivity at the same time.

1. Toolbar

This bar contains several buttons. These buttons are the same in every section. There are four buttons that are important for the animation section. The first two buttons let you switch between an overview of your scene or the camera view. The other two buttons let you decide if you want to use the transform gizmo or you want to move objects, lights etc.. by clicking anywhere in the 3D view.

2. Run/Edit mode switch

These three buttons allow you to put the editor in edit mode, run mode or both modes. When run mode is activated, all user input is routed to your project. The editor will not respond to user input where this could result in problems. When edit mode is enabled, the project does not recieve any user input. When you enable both modes, both the editor and your project will recieve user input.

3. Section selection

This pull-down menu allows you to switch to another section.

4. Edit tab panels

These panels allow you to edit dynamics, objects, lights etc..

  • Light List
  • Object List
  • Camera List
  • Skinning
  • Value Sliders
  • Dynamics Settings

5. 3D animation view

This is your main view on the project. At the top left of this window there is a menu that allows you to change several options. This menu and all helper items are disabled when the editor is in run mode. To enable the menu and all helper items, switch the editor to edit mode or edit/run mode.

  • Animation 3D View

6. Mouse mode

Thes buttons select the current mouse mode. There are four options: move, rotate, scale and select. You need to click inside the 3D view to use the selected mouse mode.

7. Motion values

Here you can type in or lock the values you are currently editting with the current mouse mode.

  • Motion Values

8. Motion toolbar

This toolbar provides several options while editting motions. You can either move objects in relative to the world or their parent. The third and fourth button allows you to increase or decrease the word scale. This is especially important when you are not using the transform gizmo and you want to increase input accuracy. The last two buttons allow you to reset a key and its curve parameters.

9. Motion slider

This window allows you to change the timers by dragging the slider. It also allows you to play and stop timers. When you play a timer it will loop between the beginning and end of the slider range. Several controls allow you to delete, copy or insert keys. The curve controls allow you to alter the curve of the motion. By pressing the right mouse button on this window, additional options will become available.

  • Envelope Slider

10. Message Log

Read this articele about the Message Log

One Level Up - Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Array Buffer - Quest3D

Array Buffer

Contents

  • 1 Array Buffer
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Get Base type
    • 1.5 Storing data
    • 1.6 Retrieving data
    • 1.7 Load & Save
    • 1.8 Interface
    • 1.9 Remarks

Array Buffer

Children

  1. Array index value - Value

Description

This channel is able to store and retrieve an array of buffers.

CallChannel

Calling this channel has no effect.

Get Base type

Depending on the index value, data stored in the Array Buffer can be returned to the parent channel. This channel can also be used as a reference to another Array Buffer channel.

Storing data

To store data into this channel the SaveChannelToBuffer channel is used. Depending on the index value of the Array Buffer, the data linked to the SaveChannelToBuffer channel will be stored into the Array Buffer when the SaveChannelToBuffer is called. The index value can also be fixed, by setting the ‘Row number’ in the channel properties.

Retrieving data

To retrieve data from this channel the LoadBufferIntoChannel can be used. Depending on the index value of the Array Buffer, the data in the Array Buffer will be stored into the channel that is linked to the LoadBufferIntoChannel channel when the LoadBufferIntoChannel channel is called. Some channels have the ability to retrieve data from a buffer. For these channels the LoadBufferIntoChannel is not needed.

Load & Save

By default this channel will store the complete array into the current channel group when it is saved. When the channel group is loaded, the array is created with the configured table name and column name and the rows are restored.

Interface

Remarks

An Array Buffer can hold a large amount of data, this might increase the size of your channel group.

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array Channel - Quest3D

Array Channel

Contents

  • 1 Array Channel
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Pass Through Children
      • 1.3.2 Simple Data Types
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Array Channel

General

Reference to data in a column with any known type of channel data

Children

  1. Selector - Value
    • Row number of data to select
  2. Interface for array - Same type as selected column type
    • Dummy channel only used for passing through children

Description

This channel can be used to retrieve data from a table where the type of the data to retrieve is set to the “channel” type. When this type is selected, actual channels are stored in the column.

With this channel you are able to create a link to channels that are stored in an array column. You can then use the children of this channel to select a row from the column and pass through the children to the retrieved channel.

In the properties window you are able to select a table and a column. Please note that only column with the “Array Channel” type are listed. First select a table, and then a column. Once they are both selected, you will be asked to fix the setting. This is needed for the channel to operate correctly. So after fixing the setting, it can’t be changed. The only way to change settings is to add another channel. Please note that there will be no data lost when deleting this channel. All data is referenced and stored in the Array Table.

Linking is only possible after the type has been set, works similar to the ChannelSwitch channel.

Pass Through Children

The second channel that can be linked is a “pass-through” channel. The channel itself will be ignored and only the children will be used. The children of the children will be linked to the channel that is retrieved from the table. This makes it possible to link children to channels stored in an array.

Simple Data Types

Although it is possible to select the Value or Text types, it is recommended you use the Array Value and Array Text for simple data types. These channels are faster than the Array Channel and also use less memory.

CallChannel

This depends on the type of channel. If the type of channel has been set, please see the help of that channel.

Applications

There are many projects that can benefit from this channel.

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array Column - Quest3D

Array Column

Contents

  • 1 Array Column
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Load & Save
    • 1.5 CallChannel
    • 1.6 Exmaple

Array Column

General

Store and retrieve from an array of Channel Pointers. A Array column does not store an instance of a Channel, but just a reference to it's instance. Using Pointers is a very valueable technique for fast processing of larger numbers of Channels.

Children

none

Description

This channel is able to store and retrieve an array of Channel Pointers. In stead of Array Channel, a Array column in an Array does not contain an instance of the Channel Object, but only a reference to all the instance in a column.

In the interface you can select the Table and the Array Column pointer you want to refer to. The Array Pointer Channel will change its type to the Channel Type it refers to in the Table. This can be done only once.

Since Array Column does not store an instance, but a memory address, it needs to check whether a Channel is not deleted before providing access. This check will take a very small amount of CPU time. Only if you use very large arrays and really need fast excecution speed you can turn off this check. Note that it can cause application crashes if the Channel instance does not exist anymore.

Load & Save

Array pointers are not saved, since they contain dynamic application data.

CallChannel

Has no effect

Exmaple

Creating collision detection with Array Pointer

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays | New in version 3.5


Array Command - Quest3D

Array Command

Contents

  • 1 Array Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Get Base type
    • 1.5 Interface
    • 1.6 Commands
      • 1.6.1 Remove Row (Value, Array Table)
      • 1.6.2 Clear Table (Value, Array Table)
      • 1.6.3 Add Channel to Array Pointer List (Channel, Array Pointer)
      • 1.6.4 Set Channel to Array Pointer List (Channel, Array Pointer)
      • 1.6.5 Set Active Row (Array Table, Value)
    • 1.7 Remarks

Array Command

Children

  1. All Types Channel – Depends on the selected command.

Description

This channel can be used to execute a command on an Array channel.

CallChannel

Calling this channel will execute the selected command.

Get Base type

This channel can only be called.

Interface

Commands

Remove Row (Value, Array Table)

This command removes a row with the Value index from all the linked Array Table.

Clear Table (Value, Array Table)

This command removes all rows from all the linked Array Table.

Add Channel to Array Pointer List (Channel, Array Pointer)

This command will add the linked channel as a reference to the Array_Pointer column in an Array Table as a new row.

Set Channel to Array Pointer List (Channel, Array Pointer)

This command will set the linked channel as a reference to the Array_Pointer column in an Array Table. The Array Pointer needs to have a Value child attached, containing the index of the row to store the pointer in.

Set Active Row (Array Table, Value)

Set a row at the index of the Value child active in an Array Table.

Remarks

Currently the Array channels that can be used are: Array Buffer, Array Matrix, Array Text, Array Value, Array Vector and Array Pointer.

Please check the index in the “Quest3D 3.0 tutorial manual” to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays | Commands and Settings


Array Import - Quest3D

Array Import

Contents

  • 1 Array Import
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Array Import

General

Import a text file into a table and into columns

Children

  1. Source Text - Text
    • Text channel that holds the data to import
  2. Target Array Table- Array Table
    • Table to receive the data into

Description

With this channel you are able to import a (formatted or delimited) textfile into a Array Table. You can select the row and column separators so that the data is imported into the correct columns.

First create a column in the Array Table for each of the data columns you want to import. In the properties window you can select the separator for rows and columns. Special characters can be selected using the dropdown list.

CallChannel

If this channel is called, the data from the linked Text channel will be imported into the linked Array Table. Depending on the size of the text, the operation might take some time. It is recommended this channel is not called too often to prevent slow down of your project.

Applications

Often used to import stored data into a table for processing; Object locations, scores, XML data are some examples.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array InfoValue - Quest3D

Array InfoValue

Contents

  • 1 Array InfoValue
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Get Base type
    • 1.5 Interface
    • 1.6 InfoValue
      • 1.6.1 Selected Row Number of Child
      • 1.6.2 Number of Rows in Child
      • 1.6.3 Time stamp
      • 1.6.4 Get Active Row
      • 1.6.5 Sort Ascending
      • 1.6.6 Sort Descending
    • 1.7 Remarks

Array InfoValue

Children

  1. All Types Channel – Depends on the selected command.

Description

This channel can be used to retrieve information from Array channels.

CallChannel

Calling this channel will execute the selected command.

Get Base type

Depending on the selected command a Value is returned to the parent channel.

Interface

InfoValue

Selected Row Number of Child

This InfoValue returns the row number of the selected row returned via the Array ValueOperator or Array VectorOperator.

Number of Rows in Child

This InfoValue returns the number of rows in the attached Array channel.

Time stamp

This InfoValue will return a so called ‘Time Stamp’ value. This value represents the number of milliseconds past since January 1, 1970, 00:00:00 GMT. It is updated each time the Array information is updated or changed.

Get Active Row

This InfoValue returns you the Active Row number in a Array Table.

Sort Ascending

This command will sort the linked array column ascending.

Sort Descending

This command will sort the linked array column descending.

Remarks

This channel is also able to return information from the Quest3D editor.

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Reference Manual/Editor/Arrays Section/Array Manager - Quest3D

Reference Manual/Editor/Arrays Section/Array Manager

< Reference Manual | Editor | Arrays Section
Jump to: navigation, search

Contents

  • 1 Array Manager
    • 1.1 General
    • 1.2 Array Editor
    • 1.3 Selecting tables
    • 1.4 Update Data
    • 1.5 Data Types
    • 1.6 Selecting Cells
    • 1.7 Add column
    • 1.8 Clean Row
    • 1.9 Remove Row
    • 1.10 Add Row
    • 1.11 Insert Row
    • 1.12 Remove column
    • 1.13 Rename Column
    • 1.14 Copy Button
    • 1.15 Paste Button
    • 1.16 Clear Table
    • 1.17 Clean Column

Array Manager

General

The array manager allows you to edit tables in an "Excel"-style way.

Array Editor

In the editor window you are able to edit the content of tables. Each Array Table is listed in the left llist view of the array manager window. After selecting a table all columns are shown in the grid. The data of the columns (rows) are also shown in the grid. Each type of data will be shown differently. Adding columns can be done through the "add column" command button.

Selecting tables

You can select a table the list view of the array manager window. All tables are listed alphabetically. After a table is selected you can see the actual data of the table in the grid.

Update Data

Data stored in a table can change over time and can be changed by other channels. You can use the “Refresh” button to refresh the data. Please note that bigger tables will be slower to update, because the window has to be refreshed.

Data Types

A column can hold any type of data. Especially when the Array Channel is used, all channels can be stored into a row. The following types of channels will show up in the array manager and some can be edited.

  • Array Value - Can hold (floating point) values. The actual value can be edited by right clicking on the field.
  • Array Matrix - Can hold a matrix. This can't be edited in the manager; it will show some information of the matrix.
  • Array Vector - Can hold text. The manager will show the first part of the text, fitted into the cell. You can edit the text by double clicking the cell for a multi-line editor. You can also right-click the cell for a simple edit box.
  • Array Vector - Can hold a value vector. The values of the vector are shown in the cell, the values can be edited by double clicking on the field.
  • Array Buffer - Can hold data binary data. The data itself will not show up in the array manager only the number of bytes that are stored. This type can never be edited
  • Array Channel – This is a special case, because this channel can hold any type. The actual data is not displayed in the call (even if one of the above types is selected). You can edit the channel properties by double clicking on the cell.
  • Array Pointer - Store and retrieve from an array of Channel Pointers. A Channel Pointer column does not store an instance of a Channel, but just a reference to it's instance. Using Pointers is a very valueable technique for fast processing of larger numbers of Channels.

Selecting Cells

You can click on a cell with the left mouse button to select the cell. You can use hold the SHIFT key to select an area of cells. And you can hold down the CTRL key to add/remove cells from the selection. You can also select an entire row by left clicking on the row number. A column can also be selected, by clicking on the column header. Rows and columns can also be used in combination with CTRL. Operations will be always be done on the selection.

Add column

You if click the Add column button a dialog will be show whjere you can configure the array column. You need to give a Column name and Channel type for Array Channel and Array_Pointer you need also to set what type of channel it needs to take..

Clean Row

If you right click on selected cells you will get a context menu, if you use the "Clean Row" command all the selected cells will cleared. This means the row itself will remain present, but all data is lost in the fields.

Remove Row

When clicked all selected rows will be cleared and removed. This means all fields under the selected field(s) will move up Please note that the data will be deleted and can’t be retrieved.

Add Row

A new empty row is added to all the columns of the selected table. When an empty row is not used, it will be cleared automatically. This clearing is done when the project is loaded or when the Remove row is used. This is to make sure the row count is correct.

Insert Row

When pressed, all selected rows will be moved down and a new empty row will be inserted at the selection. No data will be lost.

Remove column

If you use this command, the selected column will be removed from the aray table. You need to confirm this action, please not that the date will be lost!

Rename Column

With this command you can change the column name.

Copy Button

This will copy the data of the selected cells to a clipboard. The Paste button can then be used.

Paste Button

You can use the Paste button to paste the content of the Clipboard (only compatible with the Copy Button) at the current selected cell. Please note that you can only copy/paste data from the same types of columns. Also, pasting data will overwrite the data in the cells.

Clear Table

This button will clean all rows from the current array table. Please note that the data will be lost.

Clean Column

If you right click on selected cells you will get a context menu, if you use the "Clean Column" command all the selected columns will cleared. This means the row itself will remain present, but all data is lost in the fields.

Back to Editor

Back to Main Index

Category: Editor


Array Matrix - Quest3D

Array Matrix

Contents

  • 1 Array Matrix
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Retrieve data
      • 1.3.2 Store data
      • 1.3.3 Load & Save
      • 1.3.4 Reference
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Array Matrix

General

Store and retrieve from an array of Matrices

Children

  1. Row - Value
    • Row number to retrieve or set from array

Description

This channel is able to store and retrieve an array of matrices.

Retrieve data

Because this channel has a Matrix base class, it can be used normally as a Matrix channel like you are used to. The Value child that is linked will allow you to select what row number from the array should be retrieved. You can retrieve data from the main source, or use this channel as a reference to another channel.

Store data

You can store data into this array by using it normally as a child or using the Set Matrix channel. The correct place in the array is selected by linking a Value child or fix the setting in the properties window. This will also work when the channel is a reference to another channel.

Load & Save

By default this channel will store the complete array into the current channel group when it is saved. When the channel group is loaded, the array is created with the configured table name and column name and the rows are restored.

Reference

If you want to select data from a stored array, you can configure this in the properties window. This allows you to retrieve data in a different channel group than the data is saved. You can have multiple references to a single column, and each can have a different row selected. The selected table name and column name should match the original table and column name.

CallChannel

Has no effect

Applications

You can use this to store a (large) number of object locations and render these one-by-one.

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array Pointer - Quest3D

Array Pointer

Contents

  • 1 Array Pointer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Load & Save
    • 1.5 CallChannel
    • 1.6 Example

Array Pointer

General

Store and retrieve from an array of Channel Pointers. A Channel Pointer column does not store an instance of a Channel, but just a reference to it's instance. Using Pointers is a very valueable technique for fast processing of larger numbers of Channels.

Children

  1. Selector - Value
    • This value contains the selection index of the Array

Description

This channel is able to store and retrieve an array of Channel Pointers. In stead of Array Channel, a Channel Pointer column in Array does not contain an instance of the Channel Object, but only a reference to the instance.

In the interface you can select the Table and the Array Column pointer you want to refer to. The Array Pointer Channel will change its type to the Channel Type it refers to in the Table. This can be done only once.

Since Array Pointer does not store an instance, but a memory address, it needs to check whether a Channel is not deleted before providing access. This check will take a very small amount of CPU time. Only if you use very large arrays and really need fast excecution speed you can turn off this check. Note that it can cause application crashes if the Channel instance does not exist anymore.

Load & Save

Array pointers are not saved, since they contain dynamic application data.

CallChannel

Has no effect

Example

Creating collision detection with Array Pointer

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays | New in version 3.5


Array Table - Quest3D

Array Table

Contents

  • 1 Array Table
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Linking
      • 1.3.2 Data Storage
      • 1.3.3 Table Naming
      • 1.3.4 References
      • 1.3.5 Array Manager
      • 1.3.6 Copy and Paste
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Array Table

General

Table with columns used to store data

Children

none

Description

This channel can hold a number of columns, and each column can hold a number of rows/fields. Each fields can hold data, the type of data is determined by the column. This data can then be referenced throughout a Quest3D project. There are several other Array channels that need to be used for storing or retrieving data from the table.

In the properties window you are able to manage the Table Name. To add, edit or remove column, rows or data to the Array Table you need to use the Array Mananger!

Linking

It is not needed to link this table to a channel, although we recommend you link it somewhere to make sure it is not deleted accidentally.

Data Storage

This channel will hold all data that is stored into the table, also all data that is stored from another channel group. Because all data is stored centrally in the channel, you can store data into a channelgroup centrally or locally as you like. Once the channel is saved and loaded, all data will be available throughout the project.

Table Naming

The name of the table is not used for linking data. Although we recommend you name all your tables uniquely throughout your project, a table has a unique ID that is hidden. So duplicate table names are possible, and will not cause a problem loading and saving data, as long as the references are set correctly.

References

There are a number of different channels that can be used to retrieve and store data from this channel. The main base types can be used, like Array Buffer, Array Matrix, Array Text, Array Value, Array_Pointer and Array Vector. These types are the fastest way to store and retrieve data from a table. For all other types the Array Channel should be used. This channel can be very flexible, but will use some more memory and processing power each time it is used.

Array Manager

Please note that you are also able to use the Array Manager in the editor to change data stored in a table. Once a table is created, it will show up in the array manager. All fields can be selected, deleted and copied to other tables or columns.

Copy and Paste

The Array Table channel can be copied, together with all data. It can be pasted into another channel group or the same. Please note that all references to the original table will remain intact. So, by deleting the original table, all the references will be lost, they will not be forwarded to the copy!

CallChannel

Nothing happens if this channel is called, but it is recommended you link it somewhere in your project, to prevent it becoming an orphan.

Applications

There are many different applications, most for central data storage. For larger projects it is very important to start using tables from the start.

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

Since Quest3D 3.6.4, the array table channel is removed from the template list. The array table channel should be dragged from the channel list. This to ensure a unique GUID is created for every new table!!

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array Text - Quest3D

Array Text

Contents

  • 1 Array Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Retrieve data
      • 1.3.2 Store data
      • 1.3.3 Load & Save
      • 1.3.4 Reference
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Array Text

General

Store and retrieve from an array of text lines.

Children

  1. Row - Value
    • Row number to retrieve or set from array

Description

This channel is able to store and retrieve an array of text lines.

Retrieve data

Because this channel has a Text base class, it can be used normally as a Text channel like you are used to. The Value child that is linked will allow you to select what row number from the array should be retrieved. You can retrieve data from the main source, or use this channel as a reference to another channel.

Store data

You can store data into this array by using it normally as a child or using the Set Text channel. The correct place in the array is selected by linking a Value child or fix the setting in the properties window. This will also work when the channel is a reference to another channel.

Load & Save

By default this channel will store the complete array into the current channel group when it is saved. When the channel group is loaded, the array is created with the configured table name and column name and the rows are restored.

Reference

If you want to select data from a stored array, you can configure this in the properties window. This allows you to retrieve data in a different channel group than the data is saved. You can have multiple references to a single column, and each can have a different row selected. The selected table name and column name should match the original table and column name. The properties window will help you select it when the referenced array is loaded, but it does not need to be.

CallChannel

Has no effect

Applications

Like any database with alpha numeric fields, you can use this channel for a large number of applications, names, addresses, high-scores etc...

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array Value - Quest3D

Array Value

Contents

  • 1 Array Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Retrieve data
      • 1.3.2 Store data
      • 1.3.3 Load & Save
      • 1.3.4 Reference
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Array Value

General

Store and retrieve from an array of Values

Children

  1. Row - Value
    • Row number to retrieve or set from array

Description

This channel is able to store and retrieve an array of values.

Retrieve data

Because this channel has a Value base class, it can be used normally as a Value channel like you are used to. The Value child that is linked will allow you to select what row number from the array should be retrieved. You can retrieve data from the main source, or use this channel as a reference to another channel.

Store data

You can store data into this array by using it normally as a child or using the Set Value channel. The correct place in the array is selected by linking a Value child or fix the setting in the properties window. This will also work when the channel is a reference to another channel.

Load & Save

By default this channel will store the complete array into the current channel group when it is saved. When the channel group is loaded, the array is created with the configured table name and column name and the rows are restored.

Reference

If you want to select data from a stored array, you can configure this in the properties window. This allows you to retrieve data in a different channel group than the data is saved. You can have multiple references to a single column, and each can have a different row selected. The selected table name and column name should match the original table and column name. The properties window will help you select it when the referenced array is loaded, but it does not need to be.

CallChannel

Has no effect

Applications

Like any database system, the number of applications for a table with values is endless.

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array ValueOperator - Quest3D

Array ValueOperator

Contents

  • 1 Array ValueOperator
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Highest Value
      • 1.3.2 Lowest Value
      • 1.3.3 Average Value
      • 1.3.4 Total Value
    • 1.4 CallChannel
    • 1.5 Tips
    • 1.6 Remarks

Array ValueOperator

General

Perform an operation on a Array that results in a Value

Children

  1. Type depends on setting - Any type of channel
    • The actual child that needs to be linked is defined by the selected operation.

Description

Perform an operation on a Array that results in a Value. The following operation can be selected:

Highest Value

Find out what the highest value in the array is. A single Array Value channel needs to be linked. This channel is set to the highest value that was found in the array. The Array InfoValue channel with the "Selected row number of child" setting can be used after this operation to retrieve the actual row number that holds the highest value.

Lowest Value

Find out what the lowest value in the array is. This channel is set to that lowest value. The Array InfoValue channel with the "Selected row number of child" setting can be used after this operation to retrieve the actual row number that holds the lowest value. A single Array Value channel needs to be linked.

Average Value

Calculate the average value of the complete array is. A single Array Value channel needs to be linked.

Total Value

Calculate the total value of the entire array. A single Array Value channel needs to be linked.

CallChannel

This channel is normally used as a Value channel to perform the operation, but if this channel is called, the operation is also executed.

Tips

  • Some operations are calculated when this channel is used. With a large number of values in a Array this might take some time to calculate. It is then only re-calculated when the array is changed somehow. So, be careful using this value every frame when you are constantly changing a large array.

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array Vector - Quest3D

Array Vector

Contents

  • 1 Array Vector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Retrieve data
      • 1.3.2 Store data
      • 1.3.3 Load & Save
      • 1.3.4 Reference
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Array Vector

General

Store and retrieve from an array of Vectors

Children

  • Row - Value

Row number to retrieve or set from array

Description

This channel is able to store and retrieve an array of Vectors.

Retrieve data

Because this channel has a Value Vector base class, it can be used normally as a Value Vector channel like you are used to. The Value child that is linked will allow you to select what row number from the array should be retrieved. You can retrieve data from the main source, or use this channel as a reference to another channel.

Store data

You can store data into this array by using it normally as a child or using the Set Vector channel. The correct place in the array is selected by linking a Value child or fix the setting in the properties window. This will also work when the channel is a reference to another channel.

Load & Save

By default this channel will store the complete array into the current channel group when it is saved. When the channel group is loaded, the array is created with the configured table name and column name and the rows are restored.

Reference

If you want to select data from a stored array, you can configure this in the properties window. This allows you to retrieve data in a different channel group than the data is saved. You can have multiple references to a single column, and each can have a different row selected. The selected table name and column name should match the original table and column name. The properties window will help you select it when the referenced array is loaded, but it does not need to be.

CallChannel

Has no effect

Applications

You can create a system that keeps track of your position over time, or store the positions of a large number of objects.

Remarks

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Array VectorOperator - Quest3D

Array VectorOperator

Contents

  • 1 Array VectorOperator
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Closest Vector
      • 1.3.2 Furthest Vector
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips
    • 1.7 Example

Array VectorOperator

General

Perform an operation on a Array that results in a Value Vector

Children

  1. Type depends on setting - Any type of channel
    • The actual child that needs to be linked is defined by the selected operation.

Description

Perform an operation on a Array that results in a Value. The following operation can be selected:

Closest Vector

This will retrieve the vector from a Array Vector child that is closest the Value Vector linked as second child. The operation will look up a vector from the array and compare it to the vector that is linked. It will set itself to the vector that is found as closest. You can use the Array InfoValue channel to retrieve the row that holds this vector.

Furthest Vector

This will retrieve the vector from a Array Vector child that is the furthest away from the Value Vector that is linked as second child. The operation will look up a vector fro the array and compare it to the other vector linked. It will set itself to the vector that was found furthest away. You can use the Array InfoValue channel to retrieve the row that holds this vector.

CallChannel

This channel is normally used as a Value channel to perform the operation, but if this channel is called, the operation is also executed.

Applications

Find a object, camera or light close to a current position.

Tips

Some operations are calculated when this channel is used. With a large number of vectors in a Array this might take some time to calculate. It is then only re-calculated when the array is changed somehow. So, be careful using this value every frame when you are constantly changing a large array.

Example

Please check in the Quest3D tutorial manual to see where this channel is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Reference Manual/Editor/Arrays Section - Quest3D

Reference Manual/Editor/Arrays Section

< Reference Manual | Editor
Jump to: navigation, search

Arrays Section

The array section has been created so that you can use the array manager together with your project. The array manager allows you to edit arrays in an "Excel"-style window.

There are also a number of other windows that will help you edit arrays in your scene and allow you to see the changed immediately.

  • Array Manager

One Level Up - Editor

Back to Main Index

Category: Editor


Articles/AvoidActiveXUpdates - Quest3D

Articles/AvoidActiveXUpdates

< Articles(Redirected from AvoidActiveXUpdates)
Jump to: navigation, search

Avoiding automatic updates of the ActiveX control

Introduction

When running Quest3D in a Web Page, that implements the control like it is done in the index.html file that is published by default, the ActiveX control is automatically downloaded and installed (after user confirmation). Also, when running the control in for instance Microsoft Powerpoint, it will check the version of the viewer and download it when neccesary.

Sometimes this check is unwanted, since in some environments there is no internet connection.

Solution

Instead of registering the default ActiveX Control, as of Quest3D 3.6.3 it is possible to register a different .DLL which contains the ActiveX control. However, this control does not check for updates. The Quest3D Viewer has to be installed manually. The viewer, as well as the ActiveX Control may be freely redistributed with your application.

Installing the DLL

The DLL is called Quest3dactivex_NoUpdate.dll and located in your Quest3D installation folder. You can copy the control to client machines and register it pressing Start->Run in Windows and then enter "regsvr32.exe <YourDllFolder>/Quest3dactivex_NoUpdate.dll"

Installing the Viewer

You also need to install the correct viewer on the client machines. A setup program for the Quest3D Viewer is located in <YourQuest3DFolder>/WebInstallerExe/webviewer<xx>.exe (where x is are digits that indicate the engine version. Sometimes, when a new Quest3D version is released, the engine version also increases. If you switch to a newer Quest3D version, you should check whether it is needed to update the viewer file in your setup program as well.

See Also

  • ActiveX
  • Publishing Quest3D Projects

External links

  • ActiveX in Wikipedia
  • Introduction to ActiveX Controls at the Microsoft Website


Articles/AvoidActiveXUpdates - Quest3D

Articles/AvoidActiveXUpdates

< Articles
Jump to: navigation, search

Avoiding automatic updates of the ActiveX control

Introduction

When running Quest3D in a Web Page, that implements the control like it is done in the index.html file that is published by default, the ActiveX control is automatically downloaded and installed (after user confirmation). Also, when running the control in for instance Microsoft Powerpoint, it will check the version of the viewer and download it when neccesary.

Sometimes this check is unwanted, since in some environments there is no internet connection.

Solution

Instead of registering the default ActiveX Control, as of Quest3D 3.6.3 it is possible to register a different .DLL which contains the ActiveX control. However, this control does not check for updates. The Quest3D Viewer has to be installed manually. The viewer, as well as the ActiveX Control may be freely redistributed with your application.

Installing the DLL

The DLL is called Quest3dactivex_NoUpdate.dll and located in your Quest3D installation folder. You can copy the control to client machines and register it pressing Start->Run in Windows and then enter "regsvr32.exe <YourDllFolder>/Quest3dactivex_NoUpdate.dll"

Installing the Viewer

You also need to install the correct viewer on the client machines. A setup program for the Quest3D Viewer is located in <YourQuest3DFolder>/WebInstallerExe/webviewer<xx>.exe (where x is are digits that indicate the engine version. Sometimes, when a new Quest3D version is released, the engine version also increases. If you switch to a newer Quest3D version, you should check whether it is needed to update the viewer file in your setup program as well.

See Also

  • ActiveX
  • Publishing Quest3D Projects

External links

  • ActiveX in Wikipedia
  • Introduction to ActiveX Controls at the Microsoft Website


Reference Manual/Getting Started/Basics - Quest3D

Reference Manual/Getting Started/Basics

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Basics
    • 1.1 Introduction to real-time 3D
    • 1.2 Channels
    • 1.3 Groups
    • 1.4 Templates
    • 1.5 Linking
    • 1.6 Animation
    • 1.7 Making it work!

Basics

Introduction to real-time 3D

A short message from us, just to let you know how to "think" about real-time 3D.

  • Introduction to real-time 3D

Channels

These are used throughout Quest3D and are the core of the whole system. Here you can read some more on how they are used and how they are designed.

  • What are channels...

Groups

A number of channels connected form a channel group, but there is more to know about channel groups...

  • Channel Groups

Templates

Using templates can increase your productivity. Follow this link to learn how!

  • Templates

Linking

Not all channels "fit". There are rules in Quest3D that should be followed. These rules are explained here.

  • Linking

Animation

Before you start animating your objects or cameras there are some things you should know about the advanced animation system in Quest3D that can drive your project.

  • Animation

Making it work!

This chapter describes how you can turn a Quest3D project into a working demo, presentation, game, or simulation.

  • Make it work!

Back to Main Index

Category: Reference Manual


SDK/Before you start building channels - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Before you start building channels

From Quest3D

< SDK
Jump to: navigation, search

Before you start building Channels

Before you start building channels be sure that it is absolutely necessary to do so. In principle, the Channel Editor and in some cases LUA Scripting will be enough to create virtually every application you want. Remind this: for most technical or software design related challenges in Quest3D there are others users who ran into the same issues. Discuss them on one of the forum topics, before you start building channels.

Use the SDK only for:

  • Invoking 3rd party libraries
  • Supporting custom hardware
  • Data handling from sources that are not natively supported by Quest3D.

Do not use the SDK for:

  • Importing files
  • Changing the GUI, except for creating Channel Dialogs
  • Coding Channel logic or Channel structures. Use the Channel Editor instead.


Bone - Quest3D

Bone

Contents

  • 1 Bone
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks

Bone

General

Used by SkinnedMesh to deform the mesh.

Children

  1. Bone Matrix - Matrix
    • Matrix to use as a bone. Use a Motion to also be able to change the rest position of the bone.

Description

With this channel you define where each bone of the SkinnedMesh deformation is located.

CallChannel

Calling this channel has no effect.

Applications

To deform an object you must connect a SkinnedMesh between a 3D ObjectData and a 3D Object. You then connect this channel to the skinning deformation to specify the position of each bone.

Remarks

The matrices of the bones overrule the matrix of an object. If you want to move all the bones by moving the object matrix you must parent each bone to this matrix.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation


Brightness Contrast Gamma - Quest3D

Brightness Contrast Gamma

Contents

  • 1 Brightness Contrast Gamma
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Example

Brightness Contrast Gamma

General

This channels lets you control the Brightness, Contrast and Gamma settings of your video card.

Children

  1. Brightness - Value Vector
    • Control the Brightness via RGB value
  2. Contrast - Value Vector
    • Control the Contrast via RGB value
  3. Gamma - Value Vector
    • Control the Gamma via RGB value

Description

This channels lets you control the Brightness, Contrast and Gamma settings of your video card. Per control you can use RGB values to play with colour effects.

CallChannel

You need to call this channel only once to apply the settings.

Remarks

Brightness Contrast Gamma channel ONLY works if you run you the application in FULLSCREEN!!!

Be aware if you use this channel that you set these standard values before publishing the project .

  • Brightness : 0, 0, 0
  • Contrast : 0.5, 0.5, 0.5
  • Gamma : 1, 1, 1

Example

To see the effect of the channel, you need to publish this example to a stand alone application.

When the application start select FullScreen.

  • Brightness is controlled by the 1 and 2 key.
  • Contrast is controlled by the 3 and 4 key.
  • Gamma is controlled by the 5 and 6 key.
  • Hold N key to control the Brightness setting per collor channel. (RGB)

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings | New in version 3.5


Buffer - Quest3D

Buffer

Contents

  • 1 Buffer
    • 1.1 Children
    • 1.2 General
    • 1.3 Description

Buffer

Children

none

General

Can hold data

Description

This channel can hold data. Any kind of data is supported. This channel can be used by a number of channels, like the database and network channels to transfer data over the network or to/from a database.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


CallChannel - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

CallChannel

From Quest3D

Jump to: navigation, search

Function definition

void CallChannel();

Description

This function is called by Quest3D engine when the channel itself is called.

Remarks

This channel should be overloaded when the "CallChannel" logic should be implemented. This function is called every tree count.

Example

The following example will show a part of the "ChannelCaller" channel. This code will call every linked channel one by one.

void Aco_ChannelCaller::CallChannel() {
  A3d_Channel* inputChannel;

  if(CheckRenderCount()) {
     int count = GetChildLinkPositionCount(0);
     // we calculate all the links we made
     for(int i=0;i<count;i++) {
        inputChannel = (A3d_Channel*)GetChildFromLinkPosition(0, i);
        if(inputChannel!=NULL) {
           inputChannel->CallChannel();
        }
     }
  }
}

Related Documentation

CheckRenderCount, GetChild, Loop protection

One Level Up - A3d Channel

Back to Main Index


CallOnGetChild - Quest3D

CallOnGetChild

Contents

  • 1 CallOnGetChild
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

CallOnGetChild

General

Call the first child when the parent channel asks for a child.

Children

  1. Channel to call - All Types Channel
    • This child will be called first
  2. Child to pass trough - All Types Channel
    • This child will be "linked through" to the parent

Description

CallOnGetChild can be linked between any existing link by changing its own base type and passing the original channel to the parent.

When creating a CallOnGetChild channel you can select which type of channel it pretends to be by selecting a type in the CallOnGetChild dialog. Here the base types of all channels are listed. So if you wish to pass an Envelope channel you select its base type value.

You can do this in the channel dialog that is displayed here.

First select the channel type you would like this channel to be and then click on the "Set" button. You will get a warning that this channel can only be set once. Click on "OK" to set the new type. If you would like to change the type later you will need to delete the channel and add another one.

This channel makes it possible to create an action when the parent channel asks for its child. This is a very useful place since it lets you respond to certain situations. It is also a very easy way to insert a piece of channel logic without making a whole calling tree that handles the logic you want to execute.

CallChannel

Calls the first child channel linked and then passes the second link to the parent.

Remarks

Please note that the "Child to pass trough" child link position accepts all types, even when the channel has been configured to only accept a certain type. This is correct, but you should only link channels to this link position that have the save (base) type as this channel has been configured as.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


CallSelected - Quest3D

CallSelected

Contents

  • 1 CallSelected
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

CallSelected

General

Calls a given child number

Children

  1. Selector - Value
    • Child number to call (of the Cases child)
  2. Default - All Types Channel
    • When the "Selector" is out of range of the number of children linked to "Cases" this child will be called
  3. Cases - All Types Channel
    • Children to call based on the "Selector" value. This link accepts more than one child.

Description

This channel works like a switch.

The Selector (value) will select which linked child (Case) will be called. If the Selector value is out of range (less or more than the number of Cases) the default child will be called.

CallChannel

When called it will call the selected child.

Remarks

The first child linked to the "Cases" is number 0 (zero). So if the "Selector" is set to 0, this channel will call the first link of "Cases"

Applications

You can use this channel to switch between different scenes or select a certain operation based on a number.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


Camera - Quest3D

Camera

Contents

  • 1 Camera
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Position of the camera
      • 1.3.2 Camera fog
      • 1.3.3 Perspective
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Camera

General

A camera

Children

  1. Camera Matrix - Matrix
    • The orientation and position of the camera.
  2. Fog On Off - Value
    • Turn the fog on or off (0=off, 1=on)
  3. Fog Mode: 0-Lin 1-Exp 2-Exp2 - Value
    • The fog mode.(0=Linear etc..)
  4. Fog Start Distance - Value
    • Start of the fog.(only used if the fog is in linear mode)
  5. Fog End Distance - Value
    • End of the fog.(only used if the fog is in linear mode)
  6. Fog Density - Value
    • Fog density(only used if the fog is in exponential mode)
  7. Fog Color R - Value
    • The red component of the fog color.
  8. Fog Color G - Value
    • The green component of the fog color.
  9. Fog Color B - Value
    • The blue component of the fog color.
  10. Zoom Factor - Value
    • You can use this to zoom in and out.
  11. Projection Matrix - Matrix
    • You can link a projection matrix here to achieve other projections (isometric for example)

Description

Helper item for a camera in the animation 3d view

With this channel you can specify the view point for rendering objects. You can either link this channel to a 3D Render or you can call this channel to set this channel as the 'current camera'. When a camera is linked to a render and you call the render the camera automatically becomes the current camera.

Position of the camera

The first child of the camera determines the orientation of the camera.

Camera fog

Scene without fog.

The same scene with fog.

The camera does not need the fog children. It saves the values internally. The fog children can be used to control the fog settings dynamically with other channels. To get a detailed description of each setting look at the Camera List help. Note that fog does not affect the background. To make the the fog blend into the background you need to adjust the background color to mach the fog color.

Perspective

The grid with a high zoom factor camera

The grid with a low zoomfactor camera

The preparing the perspective calculations is done by the camera automatically. The only value it needs to do this is a zoom factor. A larger value zooms in and a smaller value zooms out.

Sometimes you need to prepare the perspective calculations more accurate. An example of this is when you want to specify a far and near clipping plane. A channel that prepares these perspective calculations is the ProjectionMatrix. You can link it to the camera to override the camera calculations.

CallChannel

If you call this channel it is set as the 'current camera'

Remarks

All values of the fog are saved inside the camera. It's possible although to link values to the camera. This can be useful if you want to animate the fog.

Applications

Objects can't be rendered without a camera.

Tips

You can use multiple cameras in one render loop to make HUDs or overlays.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Reference Manual/Editor/Animation Section/Camera List - Quest3D

Reference Manual/Editor/Animation Section/Camera List

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Camera List
    • 1.1 General
    • 1.2 Fog
    • 1.3 Zooming
    • 1.4 Near and far clipping planes
    • 1.5 Controls

Camera List

General

The camera tab

In this window you can select a camera and change some properties. Just like with the light list you can add a new camera by clicking the ‘Add Camera’ button. Once you have selected a camera you can edit the zoom factor and the fog settings. Once you select a camera it’s motion is automatically selected and ready for editing.

The selected camera will be highlighted in the 3d view. If you cannot see the camera in the 3D view then make sure cameras are not hidden.

Fog

When you enable fog for the camera new parameters that control the fog will appear. You can enable or disable fog for a camera by clicking the "Fog ON/OFF" buttons (see control 1 below). Fog is only visible when you are in "Camera View" (see Animation_3D =_View documentation) mode.

The fog has two settings: Falloff and color. Falloff specifies how the fog gets denser as objects are further away from the camera. You can change the "Fog Type" to change the type of falloff for the fog. There are three types of falloff:

Fog intensity over distance

  • Linear - This type of fog is controlled by a begin and an end range value. At the beginning range the fog density is 0% at the end of the fog range the density is 100%. The graph of this type of fog shows a line.
  • Exponential - This is controlled by a ‘density’ value. A larger density value will result in denser fog. The density value can be any value between 0.0 and 1.0. The graph of this type of fog shows a curved line.
  • Exponential2 - This type of fog is also controlled by a ‘density value’. The graph of this type of fog shows an S curve.

You can change the color of the fog by clicking the "Fog color" button (see control 5 below). In most cases you want the fog to be the same color as the background color. If you do not make them the same color distant objects might look strange. If you link the three color values of the ClearScreen to the camera fog color (or vice versa) channel link to get the same color without using too much channels.

Fog can cause some difficulties when you are using transparent objects. This is because fog alters the blending of some transparent objects. A solution could be to not use the color in the alpha blending operation. You can also render the transparent objects after you rendered the foggy objects. You need to do this with a render that has a camera with the same zoom factor and motion but with fog disabled.

Zooming

You can make the camera zoom in and out by changing the "Zoom Factor" value (see control 6 below). A larger zoom factor zooms in and a smaller zoom factor zooms out. By default the zoom factor is 1.0.

The zoom factor lets you zoom in and out. 1 is the default value. A larger value than 1 zooms in and a smaller value than 1 zooms out. You can create a 'fish-eye' effect by choosing a low zoom factor such as 0.2. A negative zoom factor will invert the picture.

You can also experiment with the size of the camera to create a wide screen effect. Just size one of the axis of the motion of the camera.

Near and far clipping planes

All geometry outside the two clipping planes is not rendered. This increases performance because you can hide geometry in the distance and geometry behind the camera.

You can use fog to hide the harsh clipping effect by making sure the fog is at its full density at the clipping point. The exponential fog types vary the fog intensity between the near clipping plane and the far clipping plane.

To change the near and far clipping plane you need to construct a projection matrix. You can do this by using the ProjectionMatrix channel. Next you’ll need to link the ProjectionMatrix to the camera. You should never use a near clipping plane distance of 0 because this will result in z-buffer problems. You can use a small value such as 0.1 instead.

Setting the near and far clipping plane

Controls

  • 1 - Fog On/Off - This function turns fog on or off for the selected camera. If fog is turned on all objects will be colored by the fog color as they move further away from the camera.
  • 2 - Fog Type - Specify how the fog varies over distance.
  • 3 - Fog Start - Start distance of the fog
  • 4 - Fog End - End distance of the fog
  • 5 - Fog Color - Color of the fog
  • 6 - Zoom Factor - Zoom factor of the selected camera.
  • 7 - Add Camera - Adds a new camera and tries to connect it to the current selected 3D Render channel.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Categories - Quest3D

Categories

The following categories exist in the wiki.

Showing below up to 39 results starting with #1.
View (previous 50) (next 50) (20 | 50 | 100 | 250 | 500).

  1. A.I. (6 links)
  2. ActiveX (3 links)
  3. Animation (22 links)
  4. Animation Section (10 links)
  5. Arrays (15 links)
  6. Channels (324 links)
  7. Channels Section (6 links)
  8. Collision (8 links)
  9. Commands and Settings (22 links)
  10. Conditional Channels (8 links)
  11. Database (8 links)
  12. Depreciated (3 links)
  13. Dynamics (33 links)
  14. Editor (45 links)
  15. Getting Started (7 links)
  16. HLSL (2 links)
  17. Incomplete (21 links)
  18. Network (8 links)
  19. New in version 3.5 (22 links)
  20. New in version 3.6 (3 links)
  21. New in version 4.0 (51 links)
  22. Newton (28 links)
  23. ODE (3 links)
  24. OO (32 links)
  25. Object Section (8 links)
  26. Objects and Rendering (47 links)
  27. Operators (6 links)
  28. Particles (8 links)
  29. Reference Manual (54 links)
  30. Scripting (2 links)
  31. Shaders (4 links)
  32. Sound (12 links)
  33. System (62 links)
  34. Texturing (8 links)
  35. Trackers (15 links)
  36. Tutorials (21 links)
  37. UserInput (6 links)
  38. VR (16 links)
  39. Variables (19 links)

View (previous 50) (next 50) (20 | 50 | 100 | 250 | 500).


Category:A.I. - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:A.I.

From Quest3D

Jump to: navigation, search

There are 6 articles in this category.

3

  • 3D Graph
  • 3D GraphCommand

F

  • FiniteStateMachine

M

  • MotionPlanning
  • MotionPlanningInfoValue
  • MotionPlanningInfoVector

Category: Channels


Category:ActiveX - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:ActiveX

From Quest3D

Jump to: navigation, search

There are 3 articles in this category.

A

  • ActiveX Data
  • ActiveX Event

I

  • InActiveX

Category: Channels


Category:Animation - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Animation

From Quest3D

Jump to: navigation, search

There are 22 articles in this category.
A
  • Advanced Motion Blender
  • Advanced Motion Data
  • Advanced Motion Data Combiner
  • AdvancedMotionCommand
  • AdvancedMotionInfoValue
B
  • Bone
C
  • CharacterSkin
  • ClothObject
E
  • Envelope
  • Envelope Command
F
  • FastSkinning
M
  • MorphObject
  • Motion
  • MotionPlanning
  • MotionSet
  • MotionSetBlender
S
  • SetTimeBase
  • SkinnedCharacter
  • SkinnedMesh
  • SkinnedMorph
T
  • TickCount
V
  • VertexAnimation

Category: Channels


Category:Animation Section - Quest3D

Category:Animation Section

There are 10 articles in this category.
R
  • Reference Manual/Editor/Animation Section
  • Reference Manual/Editor/Animation Section/Animation 3D View
  • Reference Manual/Editor/Animation Section/Camera List
  • Reference Manual/Editor/Animation Section/Dynamics Settings
  • Reference Manual/Editor/Animation Section/Envelope Slider
R cont.
  • Reference Manual/Editor/Animation Section/Light List
  • Reference Manual/Editor/Animation Section/Motion Values
  • Reference Manual/Editor/Animation Section/Object List
  • Reference Manual/Editor/Animation Section/Skinning
  • Reference Manual/Editor/Animation Section/Value Sliders

Categories: Reference Manual | Editor


Category:Arrays - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Arrays

From Quest3D

Jump to: navigation, search

There are 15 articles in this category.
A
  • Array Buffer
  • Array Channel
  • Array Column
  • Array Command
  • Array Import
  • Array InfoValue
  • Array Matrix
A cont.
  • Array Pointer
  • Array Table
  • Array Text
  • Array Value
  • Array ValueOperator
  • Array Vector
  • Array VectorOperator
G
  • Group Array Pointer

Category: Channels


Category:Channels Section - Quest3D

Category:Channels Section

There are 6 articles in this category.

R

  • Reference Manual/Editor/Channels Section
  • Reference Manual/Editor/Channels Section/Channel Graph
  • Reference Manual/Editor/Channels Section/Channel List
  • Reference Manual/Editor/Channels Section/Group Interface
  • Reference Manual/Editor/Channels Section/Group List
  • Reference Manual/Editor/Channels Section/Template List

Categories: Reference Manual | Editor


Category:Collision - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Collision

From Quest3D

Jump to: navigation, search

There are 8 articles in this category.
C
  • CollisionBoxCheck
  • CollisionObject
  • CollisionRayCheck
  • CollisionResponse
C cont.
  • CollisionSphereCheck
D
  • DetectMouseCollision
E
  • Expression Value
F
  • FastCollisionResponse

Category: Channels


Category:Commands and Settings - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Commands and Settings

From Quest3D

Jump to: navigation, search

There are 22 articles in this category.
3
  • 3D GraphCommand
A
  • AdvancedMotionCommand
  • Array Command
B
  • Brightness Contrast Gamma
C
  • ClearScreen
  • Command
D
  • DebugOutput
  • Detect3DSettings
E
  • Envelope Command
F
  • Flock of Birds Command
G
  • GoFullScreen
M
  • MP3 Player Command
  • MediaTexture Command
O
  • OGG Player Command
P
  • ParticleEmitterCommand
  • Patriot Command
R
  • RSS Feed
  • Rope Action
  • Rope Vector
S
  • Sound Command
  • System Command
T
  • Timer Command

Category: Channels


Category:Conditional Channels - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Conditional Channels

From Quest3D

Jump to: navigation, search

There are 8 articles in this category.
C
  • CallSelected
  • ChannelSwitch
F
  • FiniteStateMachine
  • ForLoop
I
  • If
  • IfElse
S
  • Selector
T
  • Trigger

Category: Channels


Category:Database - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Database

From Quest3D

Jump to: navigation, search

There are 8 articles in this category.
D
  • DB Buffer
  • DB DriverMySQL
  • DB DriverODBC
  • DB Info
D cont.
  • DB Query
  • DB Source
  • DB Text
  • DB Value

Category: Channels


Category:Depreciated - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Depreciated

From Quest3D

Jump to: navigation, search

There are 3 articles in this category.

R

  • Reference Manual/Editor/Channels Section/Group List

T

  • Template:Depreciated
  • Tracker Driver Patriot

Categories: Editor | Channels


Category:Dynamics - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Dynamics

From Quest3D

Jump to: navigation, search

There are 31 articles in this category.
N
  • Newton Ball and Socket
  • Newton Body
  • Newton Body Command
  • Newton Body Matrix
  • Newton Body Switch
  • Newton Body Value
  • Newton Body Vector
  • Newton Collision Compound
  • Newton Collision Convex Hull
  • Newton Collision Geometry
  • Newton Collision Primitive
  • Newton Collision Tree
  • Newton Command
  • Newton Contact Behaviour
  • Newton Contact Body
N cont.
  • Newton Contact Event
  • Newton Contact Value
  • Newton Contact Vector
  • Newton Hinge
  • Newton Joint
  • Newton Joint Command
  • Newton Material
  • Newton Material Contact
  • Newton Motor
  • Newton Point Rope
  • Newton Point Rope Body Accessor
  • Newton Rope
  • Newton Rope Body Accessor
O
  • ODE Body
  • ODE Command
  • ODE Info Value

Subcategories

There are 2 subcategories to this category.

N

  • Newton

O

  • ODE

Category: Channels


Category:Editor - Quest3D

Category:Editor

There are 40 articles in this category.
I
  • Interfaces
O
  • OO Editor
R
  • Reference Manual/Customization/Editor lay-out
  • Reference Manual/Editor
  • Reference Manual/Editor/3D Graph Painting
  • Reference Manual/Editor/Animation Section
  • Reference Manual/Editor/Animation Section/Animation 3D View
  • Reference Manual/Editor/Animation Section/Camera List
  • Reference Manual/Editor/Animation Section/Dynamics Settings
  • Reference Manual/Editor/Animation Section/Envelope Slider
  • Reference Manual/Editor/Animation Section/Light List
  • Reference Manual/Editor/Animation Section/Motion Values
  • Reference Manual/Editor/Animation Section/Object List
  • Reference Manual/Editor/Animation Section/Skinning
  • Reference Manual/Editor/Animation Section/Value Sliders
  • Reference Manual/Editor/Arrays Section
  • Reference Manual/Editor/Arrays Section/Array Manager
  • Reference Manual/Editor/Channels Section
  • Reference Manual/Editor/Channels Section/Channel Graph
  • Reference Manual/Editor/Channels Section/Channel List
R cont.
  • Reference Manual/Editor/Channels Section/Group Interface
  • Reference Manual/Editor/Channels Section/Group List
  • Reference Manual/Editor/Channels Section/Template List
  • Reference Manual/Editor/General
  • Reference Manual/Editor/General/Channel Tools
  • Reference Manual/Editor/General/Database Monitor
  • Reference Manual/Editor/General/Debug window
  • Reference Manual/Editor/General/Message Log
  • Reference Manual/Editor/General/Network Information
  • Reference Manual/Editor/General/Tab Window
  • Reference Manual/Editor/Nature & Pathfinding Section
  • Reference Manual/Editor/Nature Painting
  • Reference Manual/Editor/Object Section
  • Reference Manual/Editor/Object Section/Material or Shader Properties
  • Reference Manual/Editor/Object Section/Materials Window
  • Reference Manual/Editor/Object Section/Object 3D View
  • Reference Manual/Editor/Object Section/Surface List
  • Reference Manual/Editor/Object Section/Surface Properties
  • Reference Manual/Editor/Object Section/Texture List
  • Reference Manual/Editor/Object Section/Texture Properties

Subcategories

There are 5 subcategories to this category.

A

  • Animation Section

C

  • Channels Section

D

  • Depreciated

I

  • Importing

O

  • Object Section

Category: Reference Manual


Category:Getting Started - Quest3D

Category:Getting Started

There are 7 articles in this category.
R
  • Reference Manual/Getting Started/Basics/Animation
  • Reference Manual/Getting Started/Basics/Channel Groups
  • Reference Manual/Getting Started/Basics/Introduction to real-time 3D
R cont.
  • Reference Manual/Getting Started/Basics/Linking
  • Reference Manual/Getting Started/Basics/Make it work
  • Reference Manual/Getting Started/Basics/Templates
  • Reference Manual/Getting Started/Basics/What are channels

Category: Reference Manual


Category:HLSL - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:HLSL

From Quest3D

Jump to: navigation, search

There are 2 articles in this category.

A

  • Articles/Quest3D Semantics

H

  • HLSLObject

Category: Channels


Category:Importing - Quest3D

Category:Importing

There are 0 articles in this category.

Category: Editor


Category:Incomplete - Quest3D

Category:Incomplete

There are 21 articles in this category.
A
  • Advanced Motion Blender
  • Advanced Motion Data
  • Advanced Motion Data Combiner
  • AdvancedMotionCommand
  • AdvancedMotionInfoValue
C
  • ChannelTemplate
G
  • GUI
  • GUISkin
M
  • MotionSetBlender
N
  • Newton Rope
N cont.
  • Newton Up Vector
O
  • OO InstanceRefContainer
  • OO InterfaceCommand
  • OO SectionManager
  • OO ThisClassInstance
R
  • RSS Feed Info
S
  • SocketReceiver
  • SysInfo
  • System Command
T
  • Template:Incomplete
W
  • Wake Waves


Category:Network - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Network

From Quest3D

Jump to: navigation, search

There are 8 articles in this category.
N
  • Network Buffer
  • Network Command
  • Network Info Text
  • Network Info Value
N cont.
  • Network Matrix
  • Network Text
  • Network Trigger
  • Network Value

Category: Channels


Category:New in version 3.5 - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:New in version 3.5

From Quest3D

Jump to: navigation, search

There are 22 articles in this category.
A
  • Advanced Motion Blender
  • Advanced Motion Data
  • Advanced Motion Data Combiner
  • AdvancedMotionCommand
  • AdvancedMotionInfoValue
  • Array Column
  • Array Pointer
B
  • Brightness Contrast Gamma
F
  • FloatTexture
  • Flock of Birds Command
  • Flock of Birds Matrix
H
  • High Dynamic Range Process
  • Hybrid
K
  • Keep Running
P
  • PrintRenderBuffer
R
  • RSS Feed
  • RSS Item
  • ResourceManager
S
  • SocketAction
  • SocketInfoValue
  • SocketReceiver
  • SocketString

Category: Channels


Category:New in version 4.0 - Quest3D

Category:New in version 4.0

There are 51 articles in this category.
I
  • InterfaceFunctionParameter
N
  • Newton Ball and Socket
  • Newton Body
  • Newton Body Command
  • Newton Body Matrix
  • Newton Body Switch
  • Newton Body Value
  • Newton Body Vector
  • Newton Collision Compound
  • Newton Collision Convex Hull
  • Newton Collision Geometry
  • Newton Collision Primitive
  • Newton Collision Tree
  • Newton Command
  • Newton Contact Behaviour
  • Newton Contact Body
  • Newton Contact Event
  • Newton Contact Value
  • Newton Contact Vector
  • Newton Hinge
  • Newton Joint
  • Newton Joint Command
  • Newton Material
  • Newton Material Contact
  • Newton Motor
N cont.
  • Newton Point Rope
  • Newton Point Rope Body Accessor
  • Newton Rope
  • Newton Rope Body Accessor
O
  • OGG Player
  • OGG Player Command
  • OO Class Instances List
  • OO ClassInstance
  • OO ClassType
  • OO Instance Ref Item From Container
  • OO InstanceRefContainer
  • OO InstanceRefItem
  • OO InstanceRefTree
  • OO InterfaceChannel
  • OO InterfaceCommand
  • OO InterfaceFunction
  • OO InterfaceInfoValue
  • OO InterfaceMatrix
  • OO InterfaceText
  • OO InterfaceType
  • OO InterfaceValue
  • OO InterfaceVector
  • OO ThisClassInstance
S
  • SceneImporter
T
  • Tutorials/Object Oriented Programming/Factory Pattern
  • Tutorials/Object Oriented Programming/Introduction

Category: Channels


Category:New in version 3.6 - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:New in version 3.6

From Quest3D

Jump to: navigation, search

There are 3 articles in this category.

F

  • FasTRAK Command

M

  • Minuteman Command

P

  • Patriot Command

Category: Channels


Category:Newton - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Newton

From Quest3D

Jump to: navigation, search

There are 28 articles in this category.
N
  • Newton Ball and Socket
  • Newton Body
  • Newton Body Command
  • Newton Body Matrix
  • Newton Body Switch
  • Newton Body Value
  • Newton Body Vector
  • Newton Collision Compound
  • Newton Collision Convex Hull
  • Newton Collision Geometry
  • Newton Collision Primitive
  • Newton Collision Tree
  • Newton Command
  • Newton Contact Behaviour
N cont.
  • Newton Contact Body
  • Newton Contact Event
  • Newton Contact Value
  • Newton Contact Vector
  • Newton Hinge
  • Newton Joint
  • Newton Joint Command
  • Newton Material
  • Newton Material Contact
  • Newton Motor
  • Newton Point Rope
  • Newton Point Rope Body Accessor
  • Newton Rope
  • Newton Rope Body Accessor

Categories: Channels | Dynamics


Category:Object Section - Quest3D

Category:Object Section

There are 8 articles in this category.
R
  • Reference Manual/Editor/Object Section
  • Reference Manual/Editor/Object Section/Material or Shader Properties
  • Reference Manual/Editor/Object Section/Materials Window
  • Reference Manual/Editor/Object Section/Object 3D View
R cont.
  • Reference Manual/Editor/Object Section/Surface List
  • Reference Manual/Editor/Object Section/Surface Properties
  • Reference Manual/Editor/Object Section/Texture List
  • Reference Manual/Editor/Object Section/Texture Properties

Categories: Reference Manual | Editor


Category:Objects and Rendering - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Objects and Rendering

From Quest3D

Jump to: navigation, search

There are 47 articles in this category.
3
  • 3D Object
  • 3D ObjectData
  • 3D Render
  • 3DText
  • 3DTextFromTexture
C
  • Camera
  • CharacterSkin
  • ClothObject
  • Copy Image
  • CreateCubeCameraMatrix
  • CubeTexture
D
  • DepthSortRender
  • DynamicLOD
F
  • FastMultiObjectData
  • FastShaderStencilShadowObject
  • FloatTexture
H
  • HLSLObject
  • High Dynamic Range Process
L
  • Light
M
  • Material
  • MediaTexture
  • MorphObject
N
  • NaturePainter
O
  • ObjectDataNormalDisplace
P
  • ParticleEmitter
  • ParticleFlowGrid
  • ParticleLineBeamRenderer
  • ParticleObject
  • ParticleObjectRenderer
  • Primitive
R
  • RenderTexture
  • RenderToCubeMap
  • Rope
S
  • SaveRenderBuffer
  • ShaderSurface
  • SkinnedCharacter
  • SkinnedMesh
  • SkinnedMorph
  • SoftwareStencilShadowObject
  • StaticLOD
  • StencilShadow
  • Surface
T
  • Textout
  • Texture
V
  • VertexAnimation
W
  • Wake Particle
  • Wake Waves

Category: Channels


Category:ODE - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:ODE

From Quest3D

Jump to: navigation, search

There are 3 articles in this category.

O

  • ODE Body
  • ODE Command
  • ODE Info Value

Categories: Channels | Dynamics


Category:OO - Quest3D

Category:OO

There are 32 articles in this category.
I
  • InterfaceFunctionParameter
O
  • OO Class Instances List
  • OO ClassInstance
  • OO ClassType
  • OO Editor
  • OO Instance Ref Item From Container
  • OO InstanceRefContainer
  • OO InstanceRefItem
  • OO InstanceRefTree
  • OO InterfaceChannel
  • OO InterfaceCommand
  • OO InterfaceFunction
  • OO InterfaceInfoValue
  • OO InterfaceMatrix
  • OO InterfaceText
  • OO InterfaceType
O cont.
  • OO InterfaceValue
  • OO InterfaceVector
  • OO ThisClassInstance
P
  • Project Tree
T
  • Tutorial/OO/Patterns/Introduction
  • Tutorials/Object Oriented Programming/Facade Pattern
  • Tutorials/Object Oriented Programming/Factory Pattern
  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern
  • Tutorials/Object Oriented Programming/Introduction
  • Tutorials/Object Oriented Programming/Manager Pattern
  • Tutorials/Object Oriented Programming/Multiple inheritance
  • Tutorials/Object Oriented Programming/Object creation and rendering
  • Tutorials/Object Oriented Programming/Observer Pattern
  • Tutorials/Object Oriented Programming/Pattern Introduction
  • Tutorials/Object Oriented Programming/Singleton Pattern
  • Tutorials/Object Oriented Programming/Specialization

Category: Channels


Category:Operators - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Operators

From Quest3D

Jump to: navigation, search

There are 6 articles in this category.

E

  • Expression Value

M

  • MatrixOperator

T

  • TextFilter
  • TextOperator

V

  • ValueOperator
  • VectorOperator

Category: Channels


Category:Particles - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Particles

From Quest3D

Jump to: navigation, search

There are 8 articles in this category.
P
  • ParticleEmitter
  • ParticleEmitterCommand
  • ParticleFlowGrid
  • ParticleLineBeamRenderer
P cont.
  • ParticleObject
  • ParticleObjectRenderer
W
  • Wake Particle
  • Wake Waves

Category: Channels


Category:Reference Manual - Quest3D

Category:Reference Manual

Reference Manual

There are 49 articles in this category.
I
  • Interfaces
O
  • OO Editor
R
  • Reference Manual
  • Reference Manual/Customization/Editor lay-out
  • Reference Manual/Customization/Hot keys
  • Reference Manual/Customization/Preferences
  • Reference Manual/Customization/Tool bars
  • Reference Manual/Editor
  • Reference Manual/Editor/Animation Section
  • Reference Manual/Editor/Animation Section/Animation 3D View
  • Reference Manual/Editor/Animation Section/Camera List
  • Reference Manual/Editor/Animation Section/Dynamics Settings
  • Reference Manual/Editor/Animation Section/Envelope Slider
  • Reference Manual/Editor/Animation Section/Light List
  • Reference Manual/Editor/Animation Section/Motion Values
  • Reference Manual/Editor/Animation Section/Object List
  • Reference Manual/Editor/Animation Section/Skinning
  • Reference Manual/Editor/Animation Section/Value Sliders
  • Reference Manual/Editor/Channels Section
  • Reference Manual/Editor/Channels Section/Channel Graph
  • Reference Manual/Editor/Channels Section/Channel List
  • Reference Manual/Editor/Channels Section/Group Interface
  • Reference Manual/Editor/Channels Section/Group List
  • Reference Manual/Editor/Channels Section/Template List
R cont.
  • Reference Manual/Editor/General
  • Reference Manual/Editor/Object Section
  • Reference Manual/Editor/Object Section/Material or Shader Properties
  • Reference Manual/Editor/Object Section/Materials Window
  • Reference Manual/Editor/Object Section/Object 3D View
  • Reference Manual/Editor/Object Section/Surface List
  • Reference Manual/Editor/Object Section/Surface Properties
  • Reference Manual/Editor/Object Section/Texture List
  • Reference Manual/Editor/Object Section/Texture Properties
  • Reference Manual/Getting Started/Basics
  • Reference Manual/Getting Started/Basics/Animation
  • Reference Manual/Getting Started/Basics/Channel Groups
  • Reference Manual/Getting Started/Basics/Introduction to real-time 3D
  • Reference Manual/Getting Started/Basics/Linking
  • Reference Manual/Getting Started/Basics/Make it work
  • Reference Manual/Getting Started/Basics/Templates
  • Reference Manual/Getting Started/Basics/What are channels
  • Reference Manual/Getting Started/Importing
  • Reference Manual/Getting Started/Installation
  • Reference Manual/Getting Started/Introduction and overview
  • Reference Manual/Help on Help/Online help
  • Reference Manual/Help on Help/Using help
  • Reference Manual/Publishing Quest3D Projects
T
  • Tutorials/Manual
  • Tutorials/Videos

Subcategories

There are 5 subcategories to this category.

A

  • Animation Section

C

  • Channels Section

E

  • Editor

G

  • Getting Started

O

  • Object Section


Category:Scripting - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Scripting

From Quest3D

Jump to: navigation, search

There are 2 articles in this category.

H

  • HLSLObject

L

  • Lua Script

Category: Channels


Category:Shaders - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Shaders

From Quest3D

Jump to: navigation, search

There are 4 articles in this category.

A

  • Articles/Quest3D Semantics

H

  • HLSLObject

S

  • ShaderInfo
  • ShaderSurface

Category: Channels


Category:Sound - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Sound

From Quest3D

Jump to: navigation, search

There are 12 articles in this category.
L
  • Listener
M
  • MIDI Player
  • MIDI Player Command
  • MP3 Player Command
  • Mp3 Player
O
  • OGG Player
O cont.
  • OGG Player Command
S
  • Sound Command
  • Sound File
W
  • WinAmp Info Text
  • WinAmp Running
  • WinAmp Spectrum

Category: Channels


Category:System - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:System

From Quest3D

Jump to: navigation, search

There are 62 articles in this category.
D
  • Detect3DSettings
F
  • FileDialog
G
  • Group Loader
  • Group Loader Status
  • GroupSelfSave
H
  • HasFocus
I
  • InScreenSaver
  • InScreenSaverPreview
  • InWinAmp
  • IsChannelLoaded
K
  • Keep Running
L
  • Load ChannelGroup
  • LoadBufferFromCache
  • LoadBufferIntoChannel
M
  • MouseInsideViewRect
N
  • NotInEditor
O
  • OpenURL
P
  • Present
  • PrintRenderBuffer
R
  • RSS Item
  • Remove Group
  • ResourceManager
S
  • SaveBufferInCache
  • SaveChannelGroupToFile
  • SaveChannelToBuffer
  • SaveRenderBuffer
  • Serial Command
  • Serial Data Package
  • Serial Info Value
  • Serial Port
  • Serial Text
S cont.
  • Serial Value
  • SetNewStartChannel
  • SetTimeBase
  • ShaderInfo
  • SocketAction
  • SocketInfoValue
  • SocketReceiver
  • SocketString
  • Start3DScene
  • SysInfo
T
  • TickCount
  • Timer Command
  • Timer Value
U
  • UniqueID
W
  • Win32 DirectoryCommand
  • Win32 DirectoryInfoText
  • Win32 DirectoryInfoValue
  • Win32 FillRect
  • Win32 Font
  • Win32 FontCommand
  • Win32 FontInfoText
  • Win32 FontInfoValue
  • Win32 MessageBox
  • Win32 SetWindow
  • Win32 SetWindowText
  • Win32 ShowMouseCursor
  • Win32 StartProgram
  • Win32 TextOut
  • WinAmp Info Text
  • WinAmp Running
  • WinAmp Spectrum

Category: Channels


Category:Texturing - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:Texturing

From Quest3D

Jump to: navigation, search

There are 8 articles in this category.
C
  • Copy Image
  • CubeTexture
F
  • FloatTexture
M
  • Material
M cont.
  • MediaTexture
R
  • RenderTexture
  • RenderToCubeMap
T
  • Texture

Category: Channels


Category:Trackers - Quest3D

Category:Trackers

There are 15 articles in this category.
F
  • FasTRAK Command
  • Flock of Birds Command
  • Flock of Birds Matrix
G
  • Glove Driver 5DT
  • Glove Driver Immersion
  • Glove Driver P5
  • Glove Source
G cont.
  • Glove Value
M
  • Minuteman Command
P
  • Patriot Command
T
  • Tracker Driver Intersense
  • Tracker Driver P5
  • Tracker Source
  • Tracker Vector
W
  • WiiMote Command

Category: Channels


Category:Tutorials - Quest3D

Category:Tutorials

There are 21 articles in this category.
A
  • Articles/Introduction to HDR Rendering
  • Articles/Publishing projects that dynamically load CGR files
  • Articles/Quest3D Semantics
  • Articles/Water rendering in Quest3D
R
  • Reference Manual
T
  • Tutorial/OO/Patterns/Introduction
  • Tutorials/Advanced Motion Tutorial
  • Tutorials/Advanced Motion Tutorial 2
  • Tutorials/Manual
  • Tutorials/Object Oriented Programming/Facade Pattern
T cont.
  • Tutorials/Object Oriented Programming/Factory Pattern
  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern
  • Tutorials/Object Oriented Programming/Introduction
  • Tutorials/Object Oriented Programming/Manager Pattern
  • Tutorials/Object Oriented Programming/Multiple inheritance
  • Tutorials/Object Oriented Programming/Object creation and rendering
  • Tutorials/Object Oriented Programming/Observer Pattern
  • Tutorials/Object Oriented Programming/Pattern Introduction
  • Tutorials/Object Oriented Programming/Singleton Pattern
  • Tutorials/Object Oriented Programming/Specialization
  • Tutorials/Videos


Category:UserInput - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Category:UserInput

From Quest3D

Jump to: navigation, search

There are 6 articles in this category.

D

  • DetectMouseCollision

F

  • ForceFeedback

M

  • MIDI Player Command
  • MouseInsideViewRect

T

  • TypeText

U

  • UserInput

Category: Channels


Category:Variables - Quest3D

Category:Variables

There are 19 articles in this category.
E
  • Envelope
  • Expression Value
F
  • Flock of Birds Matrix
M
  • Matrix
  • Motion
O
  • OO InterfaceMatrix
  • OO InterfaceText
  • OO InterfaceValue
  • OO InterfaceVector
P
  • ProjectionMatrix
S
  • Set Matrix
  • Set Text
  • Set Value
  • Set Vector
T
  • Text
  • TextFilter
  • TypeText
V
  • Value
  • Value Vector

Category: Channels


Category:VR - Quest3D

Category:VR

There are 16 articles in this category.
F
  • FasTRAK Command
  • Flock of Birds Command
  • Flock of Birds Matrix
  • ForceFeedback
G
  • Glove Driver 5DT
  • Glove Driver Immersion
  • Glove Driver P5
  • Glove Source
G cont.
  • Glove Value
M
  • Minuteman Command
P
  • Patriot Command
T
  • Tracker Driver Intersense
  • Tracker Driver P5
  • Tracker Source
  • Tracker Vector
W
  • WiiMote Command


SDK/Channels/Channel Communication - Quest3D

SDK/Channels/Channel Communication

< SDK | Channels(Redirected from Channel Communication)
Jump to: navigation, search

Introduction

There are a number of ways channels are able to communicate with each other. The most common way is with the parent and child situation. The parent will talk to its children and retrieve whatever information it needs from it, or calls a certain function. Here is some more information on this situation.

CallChannel

This function is in the base class and you can overload it to adopt channel calling functionality. A number of logic channels in Quest3D will use this function to allow you to create a logic structure. The "ChannelCaller" is the most common example, it will call all linked children; it actually runs this function of the children.

Become a child

If you want your channel to become a child of another channel you will need to set your "base GUID" to the correct value and derive from another channel class. If you take a look at the "TextToValue Example" you will see how this channel is derived from the "Value" channel. It overloaded some of the functions and channel also has the same "base GUID". That way Quest3D will know that the channel you are going to create also can be linked to other channels that accept this base type.. You must derive from the base channel (A3d_Channel), just setting the "base GUID" is not sufficient!

If you do not derive from an existing channel type, you will be creating your own new "base GUID". You will need to overload the CallChannel function to be used.

Become a parent

Like in the real world, if you have children you are a parent. A channel will become parent as soon as another channel is linked to one of the child link positions. You are able to create the child link positions in a number of different ways. There are a number of different child link positions:

If you want to create a child link position you must fill the ChildCreation struct with the correct values and use this struct on the SetChildCreateType function. This example source code will show you how to create a child link position.

// Clear all child link positions
SetChildCreationCount(0);
ChildCreation child;
child.channelType.guid = FLOAT_CHANNEL_GUID;
strcpy(child.channelType.name, FLOAT_CHANNEL_NAME);
child.requestLink = 0;
child.initialize = false;
strcpy(child.name, "Value to convert");
SetChildCreateType(child, 0);

Once the struct variables are set, you are able to use the SetChildCreateType function to actually add the child. The first parameter is the struct, and the second the initial child link position. This second parameter is important when creating multiple growing child link positions.

Call/get info from a child

The A3d_Channel class contains a function called GetChild that will allow you to retrieve a pointer to a child. With this pointer you are able to access the complete class of the channel linked. Here is an example line:

 // Get the pointer of the first child (and cast it into a value channel)
 Aco_FloatChannel* floatChannel = static_cast<Aco_FloatChannel*>(GetChild(0));

You see in one line, the "floatChannel" pointer being defined, the pointer to the first child retrieved and before it is stored in the pointer it is type-casted into the correct class. The GetChild function always returns a pointer to the base channel class A3d_Channel. Before you type-cast this pointer you should make sure you type-cast it into the correct type. If you have defined your child link positions correctly the given pointer is always correct because the Quest3D editor will make sure no different types are linked.

If you have created a number of different growing child link positions always use the GetChildLinkPositionCount and GetChildFromLinkPosition functions. Only with these functions you are able to correctly retrieve the correct pointer from a child link position. Please take a closer look at these functions for an example and more information.

If you have a single growing child link position that accepts any type of channel you are able to use the GetChildTypeCount and GetChildFromLinkGuid functions to retrieve the correct pointer. Please take a closer look at these for an example and more information.

One Level Up - Channels

Back to Main Index


SDK/Channels/Channel Communication - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/Channel Communication

From Quest3D

< SDK | Channels
Jump to: navigation, search

Introduction

There are a number of ways channels are able to communicate with each other. The most common way is with the parent and child situation. The parent will talk to its children and retrieve whatever information it needs from it, or calls a certain function. Here is some more information on this situation.

CallChannel

This function is in the base class and you can overload it to adopt channel calling functionality. A number of logic channels in Quest3D will use this function to allow you to create a logic structure. The "ChannelCaller" is the most common example, it will call all linked children; it actually runs this function of the children.

Become a child

If you want your channel to become a child of another channel you will need to set your "base GUID" to the correct value and derive from another channel class. If you take a look at the "TextToValue Example" you will see how this channel is derived from the "Value" channel. It overloaded some of the functions and channel also has the same "base GUID". That way Quest3D will know that the channel you are going to create also can be linked to other channels that accept this base type.. You must derive from the base channel (A3d_Channel), just setting the "base GUID" is not sufficient!

If you do not derive from an existing channel type, you will be creating your own new "base GUID". You will need to overload the CallChannel function to be used.

Become a parent

Like in the real world, if you have children you are a parent. A channel will become parent as soon as another channel is linked to one of the child link positions. You are able to create the child link positions in a number of different ways. There are a number of different child link positions:

If you want to create a child link position you must fill the ChildCreation struct with the correct values and use this struct on the SetChildCreateType function. This example source code will show you how to create a child link position.

// Clear all child link positions
SetChildCreationCount(0);
ChildCreation child;
child.channelType.guid = FLOAT_CHANNEL_GUID;
strcpy(child.channelType.name, FLOAT_CHANNEL_NAME);
child.requestLink = 0;
child.initialize = false;
strcpy(child.name, "Value to convert");
SetChildCreateType(child, 0);

Once the struct variables are set, you are able to use the SetChildCreateType function to actually add the child. The first parameter is the struct, and the second the initial child link position. This second parameter is important when creating multiple growing child link positions.

Call/get info from a child

The A3d_Channel class contains a function called GetChild that will allow you to retrieve a pointer to a child. With this pointer you are able to access the complete class of the channel linked. Here is an example line:

 // Get the pointer of the first child (and cast it into a value channel)
 Aco_FloatChannel* floatChannel = static_cast<Aco_FloatChannel*>(GetChild(0));

You see in one line, the "floatChannel" pointer being defined, the pointer to the first child retrieved and before it is stored in the pointer it is type-casted into the correct class. The GetChild function always returns a pointer to the base channel class A3d_Channel. Before you type-cast this pointer you should make sure you type-cast it into the correct type. If you have defined your child link positions correctly the given pointer is always correct because the Quest3D editor will make sure no different types are linked.

If you have created a number of different growing child link positions always use the GetChildLinkPositionCount and GetChildFromLinkPosition functions. Only with these functions you are able to correctly retrieve the correct pointer from a child link position. Please take a closer look at these functions for an example and more information.

If you have a single growing child link position that accepts any type of channel you are able to use the GetChildTypeCount and GetChildFromLinkGuid functions to retrieve the correct pointer. Please take a closer look at these for an example and more information.

One Level Up - Channels

Back to Main Index


Channel Dependencies - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Channel Dependencies

From Quest3D

Jump to: navigation, search

Channel Dependencies

If you build a channel and use another channel, for instance by initializing them with InitChannelFromType or GetUniqueChannel or if you use 3rd party DLL files, you must add them to the 'dependency list' . This list is created so the publishing system knows what channels to include when creating an executable.

To add a channel or 3rd party DLL to the dependency list you need to overload the DoDependencyInit function like this:

void Aco_Example4::DoDependencyInit(A3d_List* currentDependList) {
// The libmySQL.dll file is needed for this channel to operate
AddDLLDepend("libmySQL.dll", currentDependList);
// The DirectGraphics channel is needed for this channel to operate
AddChannelGuidDepend(DIRECTGRAPHICS_GUID, currentDependList);
}

If you use 3rd party DLL files, please note that you have to make a copy of these files to the <YourQuest3DFolder>/3rd directory let them be published correctly.

See Also

DoDependencyInit, AddChannelGuidDepend, AddDLLDepend, Visual Studio 2005 Deployment

One Level Up - Channels

Back to Main Index


Reference Manual/Editor/Channels Section/Channel Graph - Quest3D

Reference Manual/Editor/Channels Section/Channel Graph

< Reference Manual | Editor | Channels Section
Jump to: navigation, search

Contents

  • 1 Channel Graph
    • 1.1 General
    • 1.2 Channel Types
    • 1.3 Create Links
    • 1.4 Channel Selection
    • 1.5 Moving Channels
    • 1.6 Channel Context Menu
    • 1.7 Main Context Menu
    • 1.8 Folders
    • 1.9 Text Items
    • 1.10 Image Item
    • 1.11 Square Item
    • 1.12 Snapshot System
    • 1.13 Channel Graph Title Bar

Channel Graph

General

The blocks and lines (the graph) actually represent your program. The blocks are called channels and the lines links. A channel can be linked to another channel as a parent or a child.

Channel Types

Every channel has a certain type, this type defines whether it can be linked to another channel. You can see the type of the channel by moving your mouse over the channel. The black squares under the channel are called Child Link Squares. You can also move the mouse over these squares to view what kind of channel can be linked. On top of the channel there is always one small black link square. There are many types of channels, every channel has more help available about its type and usage. Click on a channel, and press F1 to show the help for it.

Create Links

You can create a link between two channels by clicking on the source or destination link position and start dragging a line while holding down the left mouse button. Move the mouse over the target channel and release the mouse. Then, Quest3D will check if the link can be created and if the type is correct, a link is created. To help you create links, the child link squares light up green when a link is possible.

Channel Selection

You can select a channel by clicking on it. A red outline will appear around the channel that is selected. Multiple selection is also possible: You can drag a box around a number of channels, you can use the CTRL key while selecting channels to add more channels to your selection or you can use the SHIFT key to select a entire branch of channels at the same time. These combination can also be used at the same time.

Moving Channels

You can move a channel by clicking on a channel and keeping the left mouse button down while moving (dragging) the channel around. When multiple channels are selected you will move all selected channels at the same time.

Channel Context Menu

When you click the right mouse button on a channel you will get the context menu of a channel. Here are all of the menu items explained:

  • General Properties... - Use this menu to change the settings of the channel or the links to the channel. "General Properties" will display a dialog from where you can view and delete child links and turn off the loop protection. You can also change the name of the channel.
  • Channel Properties... - This will display the properties window of the selected channel. This is different for every channel, but not every channel has a properties window. If no properties window is found, the general properties window is displayed in stead.
  • Comment... - You can add comment to a channel to help you make your channel code more readable. This comment is shown when holding the mouse over the channel in the ToolTip window.
  • Set as start channel - Your project has to start at a certain point. When this menu item is selected, the starting point will change to the selected channel. You can change the starting point as many times as you would like. There can be only one starting point in a channel group, and in a project.
  • Public Channel Functions - These functions are for working with multiple channel groups. You can change an channel into a "Public Caller", "Public Channel" or "Parameter Channel". See Channels Section for more information.
  • Copy - This will copy the selected channel(s) to a sort of clipboard. You can't paste the channels in any other program
  • Paste - When some channels where selected and copied you can paste these channels with this menu item.
  • Delete - This will delete the channel from the channel graph.
  • Re-arrange selected children - With this function you can re-arrange a tree of channels to a better order. This function works best if you SHIFT+left mouse click a (part of a) channel tree. This function is not perfect and results may vary.
  • Place in new folder - All selected items will be placed in a "Folder". Please see Channels Section documentation for more information on how folders work.
  • Help in context window - This will the display the help that comes with the selected channel. If no help window is open, one will be opened for you. Please see Help on Help for more information.
  • Change channel type - This function makes it possible to change the select channel to another channel within the same base type. For example if you have a value channel, base type value, you can change it into another value base type channel like Array Value. If you do this the current channel graph will be saved and reloaded.
  • Create Shortcut - This will create a shortcut to the channel and place it above the original channel. A shortcut can be used to take away links across two trees. Please note that a shortcut is not a channel, but just a visual representation.
  • Find Original - Jump to the channel where this is a shortcut of. (This menu item will only be shown on a channel short-cut)

Main Context Menu

When you click the right mouse button in an empty spot you will get another context menu with the following functions:

  • Folder -> Create Folder - This will create an empty folder. Please see the Channels Section documentation on how to work with folders.
  • Group Functions - This sub menu will display a list of loaded channel groups. By selecting one of the channel groups that group will be viewed. You can also add a new channel group. You will be asked for a pool name of the group.
  • Item Functions - In this submenu you are able to add a text to your channel graph, to help you comment your usage channels. You can also add pictures and colored sqaures to highlight structures.
  • Take Snapshot - This will save a snapshot of the current channelgroup.
  • Paste - Paste a previous copied or cut set of channels and or text items
  • Delete - This will delete all selected channels, directories and text items. Make sure the correct channels are selected.
  • Set as Startgroup - With this menu selection you are able to set the current channelgroup as the "Startgroup". Quest3D will then use the selected group as the group to run even when it is not in view. This is useful when you are using multiple channelgroups and want to real-time program another group.
  • View - "View All" will zoom and move the view so all channels in the current group are visible at the same time. "Selected" - will centre and zoom in on the selected channel.
  • Channel Group Properties - This will display a dialog that will show the available parameter channel in the channel group.

Folders

You can create folders for better overview of your current channelgroup. Folders can hold any number of channels, text items or other folders. You can create folders anywhere in the window. You can drag and drop channels, folders and text items into a folder. To "move inside" the folder, just double-click it. Every folder has a "Folder Up" folder. You can use this folder to move back one folder in the Channel Graph. You can can also use this folder for drag and drop operations.

Please use folder when your channel graph it getting too big to fit on the screen. When you are using too much folders please consider using multiple channelgroups. Please see Channels Section for more information on folders.

Text Items

You can use text items to comment your program. It can be very useful when you create a complex channel structure to put some comment beside the channels used.

You can place a text at any place in the Channel Graph window. The upper left corner (the start of the text) can be used to drag and drop it somewhere else in the window. You can also move the text items inside a directory.

The context menu of the text item will display two choices. "Edit" will pop up a window allowing you to change the actual text. The "Font" menu item will pop up a font selection dialog where you can select the font, font size and font type of the font you would like to use. You can select any windows font you like. To delete the text item, just select it and press the delete hot-key or use the toolbar.

When you are using text items, using fonts larger than 50 may result in strange text effects.

Image Item

You can also add images in your channel graph. Select "Item Functions" -> "Add Image Item" from the channel graph context menu and you can then select any image file to load. You can resize them by using selecting the image and using the small sqaure in the corner. These pictures are saved in your channel graph files (igr) and are not distributed with the project itself when publishing. You can double click the image item to change the properties or loaded image.

Square Item

You can use a square item to highlight a part of your channel graph. Select "Item Functions" -> "Add Square Item" from the channel graph context menu. You can change the color by double clicking on the sqaure item and you can resize it using the small square in the corner after selecting it.

Snapshot System

The snapshot system of Quest3D enables you to quickly save the current version of your channel group to disk. You can then retrieve that version with just a few clicks. This is useful when you are about to change something in your channel group that you would like to undo.

The title bar of this window holds a number of buttons that will allow you to configure the snap shot system. Quest3D is also able to automatically create snapshot for, so an history of changes is created.

When a snapshot is taken, and there is no user action (you are out for lunch for example) the countdown will not start again until you take some action (like move the mouse).

Through the "Option" menu, in the "Preferences..." you can configure the number of seconds to count down. You can also select how many snapshots should be kept. You are also able to clear all snapshots taken to save hard disk space.

Next time you load a channelgroup all snapshots are also available againItalic text. This is because every channelgroup has an unique ID. All snapshots are stored in the "History" folder in your Quest3D installation directory.

Channel Graph Title Bar

The following is shown in the title bar of the channel graph window:

  • 1 - Back Button - When pressed, you will go back to the previous folder you where viewing.
  • 2 - Folder Up - When pressed, the folder one step up will be loaded.
  • 3 - Pool name and folder names - In this part you can see the pool name of the channel group and the folder names you are descended into.
  • 4 - Snap Shot Timer/Switch - This buttons counts down and shows the number of seconds that still remain until a new snap shot is taken from the currently loaded channel group. When you click this button you are able to stop the snap shot system, the count down will stop. When clicked again it will resume the count down. When Quest3D is inactive (another program is in front of it) the system will stop the count down. If no user action is taken after a snaphot has been taken, the snapshot system will start counting down as soon as the user takes a new action.
  • 5 - Restore Snapshot List - Select a snap shot from this drop down list to load the channel graph as it was when the snap shot was taken. Note!: Selecting a snapshot will remove your last changes! Save or take a snapshot first!

One Level Up Channels Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Channels Section


Reference Manual/Getting Started/Basics/Channel Groups - Quest3D

Reference Manual/Getting Started/Basics/Channel Groups

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Channel Groups
    • 1.1 General
    • 1.2 Saving groups
    • 1.3 Linking between groups
    • 1.4 Pools
    • 1.5 Loading groups
    • 1.6 Viewing a group
    • 1.7 Interface

Channel Groups

General

Channels are organized in groups. Groups can link to each other so channels from different groups can be connected. Each group is saved as a single file. Channel groups have a .CGR extension. All information that is only used in the editor is saved in a .IGR file. This information includes the layout of the channels, text, folders and shortcuts.

Saving groups

When you save a group a converter list can be applied to the group before it is saved to disk. In Quest3D a group can be saved with multiple converters. The order of the converters determines how the file is converted. For example you can have an encrypted-zipped-no editor load group. The best thing is to apply the zip-compression as the last converter.

Linking between groups

To link between groups you can simply drag a link from a channel in one group to a channel in another group. There must be two channel graph windows in the editor before you can do this. Select one group in one window and the other group in the other window.

After you dragged the link you will see that the child becomes red. The parent gets a newly created blue child.

A blue channel represents a channel that is actually located in another group. In Quest3D this type of channel is called a public caller. The channel that is in the other group is called a public channel. Public channels are colored red. Public channels are called public because they are the only channels that can be used by channels outside the group.

There’s one more special channel: the parameter channel. A parameter channel is displayed as a green channel. Each parameter is linked to an entry of the interface of the group. In most cases each parameter has its own entry in the interface however it is possible to share an interface entry between parameter channels. Each entry of the interface of the group shows up as a link position at the public caller that uses that group. Below you see this in action.

Group 2 is using The ‘ClearScreen’ from group 1. The parameter inside group 1 is displayed as a link position at the public caller. This way we have made a ‘grayscale ClearScreen’.

You have to watch out if you are using a public caller on a group more than once. Each time a parameter is requested trough a public call the group resets and all channels are recalculated. This means that some channels that use information from the previous frame cannot be used in this way. An example of this is the inertia channel and the velocity setting of the vector operator.

A solution to this problem is to use these channels outside the group and link their result as a parameter to the group. Another solution is to create an instance of the group for each public call. This is difficult because you have to specify an index for each public call.

Pools

For Quest3D the filename of a group is not important. The filename is only used to load and save the file. To identify a group in Quest3D it must be loaded into a pool. A pool is a storage space for groups and can hold one or more groups. Links to another group are always identified by their pool name, not a filename.

You link to another group by using a public caller. In the public caller you specify a pool name and a name of the public channel. If you drag a link between two different groups all these settings are configured automatically. If you do not want to load the group into a pool by hand it is wise to turn on the ‘auto load’ function in the dialog of the public caller (blue channel).

If a pool contains multiple groups you must tell all public caller what index in the pool to use. You can do this by calling a Group Array Pointer.

Loading groups

In a Quest3D viewer you must always specify one start group (the main group). From this start group you can load other groups. There are two methods to load a group. The easiest one is to turn on the auto load option in the public caller dialog. If auto load is enabled Quest3D will load the correct group in the correct pool as soon as the public caller is needed by another channel. Another option is to load the group dynamically. This gives you more control on how and where the group is loaded. Another benefit of loading a group dynamically is that you can show a progress indicator. To find out how to load groups dynamically you can read the topic about dynamic loading.

In the editor you can load groups by selecting ‘Import..’ from the menu. To makes groups available in the viewers you need to use one of the techniques described above.

Viewing a group

Viewing a group is very simple. With all viewers you need to specify a start group. With the stand-alone viewer a file requester will pop up asking the user for a file. All loading of other group must be done directly or indirectly from the start group.

Interface

In the channel section there is a window called ‘interface’ where you can configure the list of all the link positions of the group. These link positions show up as link positions of the public caller. The list of link position and their types is called the interface of a group. By double clicking on a parameter channel (green channel) you can specify to what link position the parameter points.

You can load different groups into a single pool. You only need to make sure their interface matches.

Public callers find the public channel they represent by looking at the names of the public channels. All public channels must have a name that is unique for all public channels. Quest3D will take care of this by renaming public channels automatically.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


Channel Information - Quest3D

Channel Information

Channel Information

Shows more information on the selected channel.

If you move the mouse over any channel or its child links positions this window displays information about the item under the mouse.

You can use this window to display the name, type or base type of a channel.

If you used the comment option on a channel, this comment will also we shown in the channel info window.

One Level Up Channels Section

Back to Editor

Back to Main Index


Reference Manual/Editor/Channels Section/Channel List - Quest3D

Reference Manual/Editor/Channels Section/Channel List

< Reference Manual | Editor | Channels Section
Jump to: navigation, search

Contents

  • 1 Channel List
    • 1.1 General
    • 1.2 Description
    • 1.3 Remarks
    • 1.4 Tips

Channel List

General

All available (individual) channels for usage in the Channel Graph window

Description

This window holds a complete of all channels that are available to the user.

This window is for the advanced users, and channel developers. We recommend you use the Template List window for adding new channels to your project. If you are a SDK user, this window will show your new self-created channels.

You can "drag-and-drop" any channel into the Channel Graph window to add it to your current project. The channel will appear under the mouse pointer when the mouse button is released.

The dark blue icon in front of the channel name means the channel is initialized in memory. When a channel with a light icon is dragged into the channel graph view, the channel will be initialized and when succesful, the icon will turn to dark blue. When a channel is not found (anymore) on disk there will not appear any icon at all in front of the channel.

Remarks

  • Some channels create children automatically.
  • Help on individual channels can be shown by dragging the channel into your project, selecting it, and pressing the help button or "Context help" from the menu that appears when you click on the channel with the right mouse button.
  • You are only able to drag one channel at a time into the channel graph window.

Tips

  • You can quickly add multiple copies of a channel to the channel graph, by selecting the channel in the list, move the mouse to a spot in the channel graph and press the space bar. The channel will be dropped at the mouse pointer. As long the channel is selected in the list you can added a copy in the channel graph.

One Level Up Channels Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Channels Section


Channel reference - Quest3D

Channel reference

Channel Reference

Below is a list of all channels. Please note that you can also press F1 in the channel editor to get the reference article associated with the selected channel or editor section.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0-9

  • 3D Graph
  • 3D GraphCommand
  • 3D Object
  • 3D ObjectData
  • 3D Render
  • 3DText
  • 3DTextFromTexture
  • Back to top

A

  • ActiveX Data
  • ActiveX Event
  • Advanced Motion Blender
  • Advanced Motion Data
  • Advanced Motion Data Combiner
  • AdvancedMotionCommand
  • AdvancedMotionInfoValue
  • All Types Channel
  • Array Buffer
  • Array Channel
  • Array Command
  • Array Import
  • Array InfoValue
  • Array Matrix
  • Array Table
  • Array Text
  • Array Value
  • Array ValueOperator
  • Array Vector
  • Array VectorOperator
  • Array Column
  • Array Pointer
  • Back to top

B

  • Bone
  • Brightness Contrast Gamma
  • Buffer
  • Back to top

C

  • CallOnGetChild
  • CallSelected
  • Camera
  • ChannelCaller
  • ChannelSwitch
  • CharacterSkin !!this is channel is not in the channel list?!
  • Class Instances List
  • ClassInstance
  • ClassType
  • ClearScreen
  • ClothObject
  • CollisionBoxCheck
  • CollisionObject
  • CollisionRayCheck
  • CollisionResponse
  • CollisionSphereCheck
  • Command
  • Copy Image
  • CreateCubeCameraMatrix
  • CubeTexture
  • Back to top

D

  • DB Buffer
  • DB DriverMySQL
  • DB DriverODBC
  • DB Info
  • DB Query
  • DB Source
  • DB Text
  • DB Value
  • DebugOutput
  • DepthSortRender
  • Detect3DSettings
  • DetectMouseCollision
  • DynamicLOD
  • Back to top

E

  • Envelope
  • EnvelopeControl
  • Expression Value
  • Back to top

F

  • FastCollisionResponse
  • FastMultiObjectData
  • FasTRAK Command
  • FastShaderStencilShadowObject
  • FastSkinning
  • FileDialog
  • FiniteStateMachine
  • FloatTexture
  • Flock of Birds Command
  • Flock of Birds Matrix
  • ForceFeedback
  • ForLoop
  • Back to top

G

  • Glove Driver 5DT
  • Glove Driver Immersion
  • Glove Driver P5
  • Glove Source
  • Glove Value
  • GoFullScreen
  • Group Array Pointer
  • Group Loader
  • Group Loader Status
  • GroupSelfSave
  • GUI
  • GUISkin
  • Back to top

H

  • HasFocus
  • HLSLObject
  • High Dynamic Range Process
  • Hybrid
  • Back to top

I

  • If
  • IfElse
  • InActiveX
  • Inertia
  • InScreenSaver
  • InScreenSaverPreview
  • InstanceRefItem
  • InstanceRefContainer
  • InstanceRefTree
  • InterfaceChannel
  • InterfaceCommand
  • InterfaceFunction
  • InterfaceFunctionParameter
  • InterfaceInfoValue
  • InterfaceMatrix
  • InterfaceText
  • InterfaceType
  • InterfaceValue
  • InterfaceVector
  • InWinAmp
  • ImportObject
  • IsChannelLoaded
  • Back to top

K

  • Keep Running
  • Back to top

L

  • Light
  • Listener
  • Load ChannelGroup
  • LoadBufferFromCache
  • LoadBufferIntoChannel
  • Lua Script
  • Back to top

M

  • Material
  • Matrix
  • MatrixOperator
  • MediaTexture
  • MediaTexture Command
  • MediaTexture Info Text
  • MediaTexture Info Value
  • MIDI File Command
  • Midi File Player
  • Minuteman Command
  • MorphObject
  • Motion
  • MotionPlanning
  • MotionPlanningInfoValue
  • MotionPlanningInfoVector
  • MotionSet
  • MotionSetBlender
  • MouseInsideViewRect
  • MP3 File
  • MP3PlayerControl
  • Back to top

N

  • NaturePainter
  • Network Actions
  • Network Buffer
  • Network Info Text
  • Network Info Value
  • Network Matrix
  • Network Text
  • Network Trigger
  • Network Value
  • Newton Command
  • Newton Ball and Socket
  • Newton Body
  • Newton Body Command
  • Newton Body Matrix
  • Newton Body Switch
  • Newton Body Value
  • Newton Body Vector
  • Newton Collision Geometry
  • Newton Collision Primitive
  • Newton Collision Compound
  • Newton Collision Convex Hull
  • Newton Collision Tree
  • Newton Contact Behaviour !!Not in channel list!!
  • Newton Contact Body
  • Newton Contact Event
  • Newton Contact Value
  • Newton Contact Vector
  • Newton Hinge
  • Newton Joint
  • Newton Joint Command
  • Newton Material
  • Newton Material Contact
  • Newton Motor
  • Newton Point Rope
  • Newton Point Rope Body Accessor
  • Newton Rope
  • Newton Rope Body Accessor
  • Newton Slider
  • Newton Up Vector
  • NotInEditor
  • Back to top

O

  • ObjectDataNormalDisplace
  • ODE Body
  • ODE Command
  • ODE Info Value
  • ODE Joint
  • Ogg File
  • OggPlayerControl
  • OneTime
  • OneTimeReset
  • OO SectionManager
  • OpenURL
  • Back to top

P

  • ParticleEmitter
  • ParticleEmitterCommand
  • ParticleFlowGrid
  • ParticleLineBeamRenderer
  • ParticleObject
  • ParticleObjectRenderer
  • ParticleSpriteBeamRenderer
  • ParticleSpriteRenderer
  • Patriot Command
  • Present
  • Primitive
  • PrintRenderBuffer
  • ProjectionMatrix
  • Back to top

R

  • Remove Group
  • RenderTexture
  • RenderToCubeMap
  • ResourceManager
  • Rope
  • Rope Action
  • Rope Vector
  • RSS Item
  • RSS Feed
  • RSS Feed Info
  • Back to top

S

  • SaveBufferInCache
  • SaveChannelGroupToFile
  • SaveChannelToBuffer
  • SaveRenderBuffer
  • SceneImporter
  • Selector
  • Serial Command
  • Serial Data Package
  • Serial Info Value
  • Serial Port
  • Serial Text
  • Serial Value
  • Set Matrix
  • Set Text
  • Set Value
  • Set Vector
  • SetNewStartChannel
  • SetTimeBase
  • ShaderInfo
  • ShaderSurface
  • SkinnedCharacter
  • SkinnedMesh
  • SkinnedMorph
  • SocketAction
  • SocketInfoValue
  • SocketReceiver
  • SocketString
  • SoftwareStencilShadowObject
  • Sound Command
  • Sound File
  • Start3DScene
  • StaticLOD
  • StencilShadow
  • Surface
  • SysInfo
  • System Command
  • Back to top

T

  • Text
  • TextFilter
  • TextOperator
  • Textout
  • Texture
  • TextureLighting
  • ThisClassInstance
  • TickCount
  • Timer Command
  • Timer Value
  • Tracker Driver Intersense
  • Tracker Driver P5
  • Tracker Driver Patriot
  • Tracker Source
  • Tracker Vector
  • Trigger
  • TypeText
  • Back to top

U

  • UniqueID
  • UserInput
  • Back to top

V

  • Value
  • Value Vector
  • ValueOperator
  • VectorOperator
  • VertexAnimation
  • Back to top

W

  • Wake Particle
  • Wake Waves
  • Win32 DirectoryCommand
  • Win32 DirectoryInfoText
  • Win32 DirectoryInfoValue
  • Win32 FillRect
  • Win32 Font
  • Win32 FontCommand
  • Win32 FontInfoText
  • Win32 FontInfoValue
  • Win32 MessageBox
  • Win32 SetWindow
  • Win32 SetWindowText
  • Win32 ShowMouseCursor
  • Win32 StartProgram
  • Win32 TextOut
  • WinAmp Info Text
  • WinAmp Running
  • WinAmp Spectrum
  • Back to top

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com


Reference Manual/Editor/General/Channel Tools - Quest3D

Reference Manual/Editor/General/Channel Tools

< Reference Manual | Editor | General
Jump to: navigation, search

Contents

  • 1 Channel Tools
    • 1.1 General
    • 1.2 Set envelope timer (Envelope Guid)
    • 1.3 Enable compression for texture (Texture guid)
    • 1.4 Disable compression for texture(Texture guid)
    • 1.5 Reload Texture from file
    • 1.6 Texture Memory Used
    • 1.7 Set Rest Position (OBJECT_GUID)
    • 1.8 Flip Triangles (Surface guid or Object Guid)
    • 1.9 Flip Normals (Surface guid or Object Guid)
    • 1.10 Flip Triangles and Normals (Surface guid or Object Guid)
    • 1.11 Lightmap model (Object Guid)
    • 1.12 Collapse Object (Object guid)
    • 1.13 Merge and Collapse (Render guid)
    • 1.14 Smooth object (Surface guid or Object Guid)
    • 1.15 Create points from polygons (Surface or Object guid)
    • 1.16 Create lines from polygons (Surface or Object guid)
    • 1.17 Sync Objects (Object guid)
    • 1.18 Create Double Side Surface(s)
    • 1.19 Smooth Object
    • 1.20 Optimize Object Data
    • 1.21 Reset Position form parent
    • 1.22 Merge UV sets
    • 1.23 Compute Normals
    • 1.24 Collapse Object on Material
    • 1.25 Unwarp Texture

Channel Tools

General

These tools can be accessed using the right mouse button on all list windows. For example the object list and the surface list. But also the searchs windows.

Set envelope timer (Envelope Guid)

An envelope has an internal timer, which can be used if no value child is linked to the channel. By default the “default timer” is used. In the envelope interface you are able to change this timer. There might be many envelopes in your project and setting them all to another timer can be a long job. This channel tool allows you to select multiple envelopes and set the timer for the envelopes.

Enable compression for texture (Texture guid)

Enable compression for all selected textures. Note that some texture types (like rendertotexture) do not support this feature and will ignore this setting.

Disable compression for texture(Texture guid)

Disable compression for all selected textures. Note that some texture types (like rendertotexture) do not support this feature and will ignore this setting.

Reload Texture from file

This will reload (update) the texture from disk.

Texture Memory Used

This tool will popup a message box that shows the used memory in KB.

Set Rest Position (OBJECT_GUID)

Change 3d object data to incorporate the object position. If you import an object from an external package like 3ds max the object might be scaled very big. You can scale this object down to the right size and right position. If you want this new sizing to be the default of the object you can use this tool. It will transform the internal 3d data to incorporate the current objects motion. It will not restore this motion to the default (un scaled) motion. Reset the motion after using this tool to get the desired result.

Flip Triangles (Surface guid or Object Guid)

Triangles in Quest3D have a direction in which they are visible and a direction in which its normals (for lighting) are pointing. This tool will flip the direction in which a triangle is visible. When importing objects that where double sided in your modeling package it will loose that feature in Quest3D (not importable in real time unless specifically doubling the surface). As a result it might point the wrong way. You can use this tool to try to turn the triangles the right way. Being able to see through your object can point to this error.

Flip Normals (Surface guid or Object Guid)

Triangles in Quest3D have a direction in which they are visible and a direction in which its normals (for lighting) are pointing. This tool will flip the direction in which the normal is pointing. A completely black surface can indicate that the normals are facing the wrong way or no normals exist in the object.

Flip Triangles and Normals (Surface guid or Object Guid)

Triangles in Quest3D have a direction in which they are visible and a direction in which its normals (for lighting) are pointing. This tool will flip the direction in which the normal is pointing and flip the triangles to face the other way.

Lightmap model (Object Guid)

When using the texture lighting/shadow in Quest3D your model must be prepared. For example the lightmap textures must not tile. This tool will try to subdivide your model in different surfaces and create texture lighting textures, which are placed correctly for lighting. This tool has the potential to create thousands of textures if you use it on a very complex model. Make sure the object you use is suitable for this operation. You can quit the creation by pressing esc when processing.

The tool will ask how large your biggest texture will be. If you choose 256x256 the largest square found will get this size and all other square will be relative to this size. A square twice as small will get a 128x128 texture etc.

Collapse Object (Object guid)

Collapse object will try to recreate the surfaces for your model based on the textures that are used. All surface that use a certain texture will be grouped to be one new surface. This can potentially create a few surface where hundreds of surfaces where used. This can increase the performance of your objects dramatically. Note that if the grouped surfaces have a combined vertex count that is more then 64000 this surface is unable to be displayed.

Merge and Collapse (Render guid)

Merge and Collapse will try to recreate the surfaces for your models that are linked to one single render channel based on the textures that are used. All surface that use a certain texture will be grouped to be one new surface. This can potentially create a few surface where hundreds of surfaces where used. This can increase the performance of your objects dramatically. Note that if the grouped surfaces have a combined vertex count that is more then 64000 this surface is unable to be displayed.

Smooth object (Surface guid or Object Guid)

This object tool is able to smooth your object or surface to a desired angle. Note that if an object is imported with UV coordinates these coordinates might get glitches if vertexes need to be unique for the UV coordinates. If you wish to retain your UV settings do your smoothing in the modeling packages you imported the model from.

Create points from polygons (Surface or Object guid)

Convert your polygons in your model to display as points.

Create lines from polygons (Surface or Object guid)

Convert your polygons in your model to display as lines.

Sync Objects (Object guid)

The object-syncing tool lets you update and copy object data’s between objects. As you can see in the picture you have a source and a destination object. The source object is matched by surface name to the destination object’s surfaces. The source object is the object you wish to copy a surface from to the destination object. In general your source object might be your just re-imported model. The destination object the one you wish to update.

You can swap which object is source and which is destination with the “Swap <= =>” button. Note that you can also select on object to use this tool on.

Objectsync.jpg

In the example you can see that surface named “3” from the destination object is not found in the source object. The surface named “2” in the source object is found in the destination object but is different from the destination object. The surface named “1” is the same in both objects. Surface named “4” is a surface that only exists in the source object. Pressing the “Copy selected =>” button will copy the surfaces you selected in the source list. If a surface (like “4”) does not exist in the destination a new surface will be created. Note that only vertex and polygon data is copied. No surface settings will be overwritten.

Another feature if this window is the copying of UV sets from one stage to another. This is done be selecting which source stage is used and to which destination stage the information should go. Note that if a surface currently only has stage 1 you are not allowed to copy to stage 3. You then must first copy to stage 2.

Problems with syncing UV sets can arisse when you are trying to sync objects with different vertex counts. For example if you have two objects each with a different UV set but also a different vertex count it is not possible to merge the two into one object with the two UV sets. You have to fix this in the source model package since vertex counts have to be the same in order to create one object with both UV sets.

Create Double Side Surface(s)

Smooth Object

Optimize Object Data

Reset Position form parent

Merge UV sets

Compute Normals

Collapse Object on Material

Unwarp Texture

One Level Up General

Back to Editor

Back to Main Index

Category: Editor


ChannelCaller - Quest3D

ChannelCaller

Contents

  • 1 ChannelCaller
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

ChannelCaller

General

Calls all children from left to right order.

Children

  1. Channels To Call - All Types Channel
    • Unlimited number of channels can be linked

Description

This channel will call all children that are linked from left to right.

CallChannel

This channel will call every child linked one by one from left to right.

Applications

Often this channel is used to create a channel graph structure that is called from another structure.

Tips

  • In the properties dialog of this channel you are able to change the order by selecting an entry and draggin it up or down in the list. A small arrow will be displayed where the item will be inserted.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


SDK/Channels - Quest3D

SDK/Channels

< SDK(Redirected from Channels)
Jump to: navigation, search

Quest3D Channels

When you’ve been working with Quest3D you’ve probably seen what a channel is. In short, a channel is a reusable component that contains a piece of application logic. This component is able to interact with other channels and the Quest3D EngineInterface. Every channel is an object and a new instance is created when the channel is used in Quest3D. All channels are derived from a base channel, called A3d_Channel, which provides an interface to all generic channel functionality, such as persisting data.

General topics

  • Class Structure An introduction to the Channel hierarchy
  • Channel Communication Information on how channels communicate with each other.
  • Loading and Saving Information on channel persistent data
  • Header files Information about general definitions in all Channel header files
  • Loop protection Information on how to avoid endless loops
  • Unique Channels Information about Unique Channels which are similar to the Singletons in regular programming
  • Channel Dependencies Valuable information about channel dependencies

Class Reference

  • A3d_Channel The base channel, where every Quest3D channel is derived from
  • A3dFileLoader Class that is used when loading channel data.
  • A3dFileSaver Class that is used when saving channel data.

Struct Reference

  • ChannelType Structure that contains channel type information.
  • ChildCreation Structure that is used to create child link definitions.

Back to Main Index


SDK/Channels - Quest3D

SDK/Channels

< SDK
Jump to: navigation, search

Quest3D Channels

When you’ve been working with Quest3D you’ve probably seen what a channel is. In short, a channel is a reusable component that contains a piece of application logic. This component is able to interact with other channels and the Quest3D EngineInterface. Every channel is an object and a new instance is created when the channel is used in Quest3D. All channels are derived from a base channel, called A3d_Channel, which provides an interface to all generic channel functionality, such as persisting data.

General topics

  • Class Structure An introduction to the Channel hierarchy
  • Channel Communication Information on how channels communicate with each other.
  • Loading and Saving Information on channel persistent data
  • Header files Information about general definitions in all Channel header files
  • Loop protection Information on how to avoid endless loops
  • Unique Channels Information about Unique Channels which are similar to the Singletons in regular programming
  • Channel Dependencies Valuable information about channel dependencies

Class Reference

  • A3d_Channel The base channel, where every Quest3D channel is derived from
  • A3dFileLoader Class that is used when loading channel data.
  • A3dFileSaver Class that is used when saving channel data.

Struct Reference

  • ChannelType Structure that contains channel type information.
  • ChildCreation Structure that is used to create child link definitions.

Back to Main Index


Reference Manual/Editor/Channels Section - Quest3D

Reference Manual/Editor/Channels Section

< Reference Manual | Editor
Jump to: navigation, search

Contents

  • 1 Channels Section
  • 2 General
    • 2.1 Channels
      • 2.1.1 Channel Types
      • 2.1.2 Channel Children
      • 2.1.3 CallChannel Principle
      • 2.1.4 Linking
      • 2.1.5 Shortcuts
      • 2.1.6 Loop Protection
    • 2.2 Channelgroups
    • 2.3 Folders
      • 2.3.1 How to create a Folder
      • 2.3.2 Quick Folder
      • 2.3.3 Navigation
      • 2.3.4 Drag and drop
      • 2.3.5 Delete a Folder
      • 2.3.6 Linking channels
    • 2.4 Multiple Channelgroups
      • 2.4.1 Channelgroup Interface
      • 2.4.2 Public Channel state
      • 2.4.3 Public Caller Channel state
      • 2.4.4 Parameter Channel State
      • 2.4.5 Loading multiple channelgroups
      • 2.4.6 Auto loading
      • 2.4.7 Linking between channelgroups
      • 2.4.8 Array of Groups
    • 2.5 Available Windows
      • 2.5.1 Channel Graph Window
      • 2.5.2 Template List
      • 2.5.3 Group List
      • 2.5.4 Channel List
      • 2.5.5 Group Interface
      • 2.5.6 Channel Info
    • 2.6 Toolbar Buttons

Channels Section

General

In the channels section you are able to create a program with the use of "channels".

Channels

Channel with no child link positions

Channels are small programs that can be loaded in memory and called and used by other channels. Channels can communicate with each other by linking them together.

Channel Types

Every channel has a type. A type can be anything from something simple as a "Value" to something complex as a "3D Object".

A channel also has a "Base Type" because a channel will be able to be linked to a channel that accept children from a certain base type. This way you can mix different kind of channels with the same base type without conversion.

Channel Children

Every channel can have 1 or more children (or none) linked to itself. It then becomes the parent of those children. "Child Link Positions" are visually represented by colored squares under the channel itself.

  • Black - One child can be linked to this position
  • Yellow - Growing Link Position; Multiple children can be linked. When a child is linked on this green position, a black child link position will appear and the yellow child link position will move so there is always a free position.
  • Red - A single link position that will "Call" the linked child. Any type of channel can be linked to this position.
  • Blue - An empty spot that once had a child and can now be re-used. Or, in the case of "public channels" the channel linked is not loaded/found.

A child link position will only allow for a certain type of channels to be linked to it (or all). You can see what type can be linked in the ToolTip window when you move the mouse over the child link positions.

On top of every channel is a black link position square. This is the square where you link from or to when linking a channel to another as a child.

Without Arrow - When no data or logic goes up or down, this link is shown. This link is usually shown when the channel has no fixed function or can be configured differently.

CallChannel Principle

Channel with two different links

There is a general function we called "CallChannel" that is implemented throughout all channels. Every channel can be "Called" and can react to such a call. How a channel will act when it is called is described in the documentation of every channel.

Because every channel has different functions for every channel type we added the CallChannel type to create some default and general functionality. Some channels use this functionality to calculate itself and some to call other channels. When using the CallChannel functionality you can see two links drawn to one channel. Some channels can be called first so that it calculates something, and later used as a value.

Linking

You are able to link children to each other by drawing a line from one channel to another. You can either draw a line from the top link position or from the bottom child link position to another link position. Just hold down the mouse button and move the mouse to draw a line. Release the mouse position over the channel or child link position to try and create a link. When a link can't be created (the child link position type doesn't accept the channel type or base type) no line will be drawn. If the link is accepted, a line (the actual) link is attached to the two channels.

Please note that when you are creating a link, the child link positions and top link positions of the channels will light up red or green. There is a simple explanation for this: Red link positions will not react to a link you are currently trying to create, green links will accept the link. This is done to aid you in linking, and what might be more important, you are able to see what other links you are also able to create, making room for more creativity.

There are three different kind of links:

  • With Down Arrow - This usually means the child is called, and indicated the logic and data stream goes down, or that the child is set to a certain value.
  • With Up Arrow - This usually means that the data is requested from the child and is used by the parent.
  • Without Arrow - When no data or logic goes up or down, this link is shown. This link is usually shown when the channel has no fixed function or can be configured differently.

The "Call Channel" method is normally used to execute logic and the arrows show the way the data or logic flows to make the channel graph more readable.

You can link multiple channels at the same time to a parent. Just select the channels you would like to connect to another channel (parent) and begin linking as described above from any of the selected channel link positions. You will see multiple lines drawn. When the mouse is released over the target channel, the editor will try to add as many links as possible. When the channel has a green child link position the editor will try to add enough child link positions. When the parent has a few fixed child link positions the editor will try to link them one at a time.

Shortcuts

Channel Shortcut

A shortcut is a visual representation of a channel (and not a channel) although it looks a little like a channel. A shortcut does not have any child link position but it has a top link position. This allows you to create links between two channels without having link lines going from left to right.

When you move the mouse over a shortcut you will see a blue link line that shows the actual link the shortcut represents. You can create multiple shortcuts from one channel. When you move your mouse over the original channel where the shortcuts where created from, you will see all the actual links as blue link lines.

When you create a shortcut from a shortcut you will actually create a shortcut from the original channel (a copy of the shortcut).

Loop Protection

Continuous Update enabled

It's fairly easy to create an endless loop using channels in a graph. Just link two values to each other and your are done. As you might expect, this will result in unwanted behavior. That's why we've added a loop protection system called "Tree Count". Every time the channel graph is ran the Tree Counter is increased. Most channels will check this counter to see if they've already been used and will not run again but just keep all data intact until the next time the channel tree is executed - updating is done "Once per frame".

But, on some occasions, you might want to update - execute a channel several times in the same frame - Tree Count. Through the channel links dialog you will be able to turn the loop protection off. Especially when you are using a ForLoop channel you might want to use continuous updating. Make sure you know what you are doing before turning setting the channel update to "Continuous" because you might get stuck when running. In the "General Properties" dialog you will find a checkbox that you can select when you want update a channel continuous. When a channel is set to continuous updating, this will be visualized by a continuous loop symbol in the channel item.

Channelgroups

A channelgroup is a collection of channels and links between them. Every group has a starting point where the execution will begin. When a channelgroup is loaded every channel is loaded into memory with the correct properties and all links are made. After that your channelgroup (program) is ready to run. In the editor some extra information is loaded like the position of the channels in the Channel Graph Window, the directories and text comment items.

You can use as many channels as you would like in a channelgroup, although we don't recommend you use too much channels. Not only will you lose the overview of your channels and links, the editor will also run slower because it has more links to draw. When you are creating a larger project you should try to use multiple channel groups and link them together.

Folders

Folder

Folders (also called directory or dir) are great for data hiding, and dividing your application in parts. Folders work just like directories/folders in an operating system.

How to create a Folder

In the main channel editor window you can press the right mouse button anywhere to get a menu. In the menu select the Directory entry and when the submenu appears select Create Dir. A new folder will now appear under your mouse.

Quick Folder

You can also create a Quick Folder. This directory can be created very quickly and is identical to a normal folder. Select one or more channels with the mouse. Next, move the mouse over a channel that will be used to set the name of the folder and press the Space Bar (the default hot-key for this operation)

When a directory is created you can also press the Space Bar to un-collapse a directory. Use this Quick Dir technique to quickly expand and collapse parts of the tree that are not often used, like motions, cameras and lights.

Navigation

You can move inside a directory by double clicking on the directory. The channel editor view will be replaced by the content of the directory clicked. A Folder up directory is created automatically to allow you to go back one step in the tree. You can nest many number of directories, but we recommend not creating too much levels, because you might get confused. For big projects, please use multiple channel groups.

Drag and drop

You can drag channels (a single channel or a selection) on directories. When dropped all channels are moved inside that directory. The Folder Up can also be used for drag and drop operations to move channels back into the graph.

Delete a Folder

Be aware when you delete a folder, you also will delete ALL channels inside that folder!!!

Linking channels

You can't link directly to a directory because Quest3D will not have a clue which channel you want to link to in the folder. If you want to link to a channel inside another folder you can use the following methods:

  • Select the directory you wish to link to and press space. Create the link. Select the channels you wish to put into a folder and press space again.
  • Drag and drop the channel you wish to link into the folder with the other channel to link to. Go into that folder and create the link. Drag and drop the linked channel back into the Folder Up
  • You can also use multiple Channel Graph windows. Go into the source folder in the main channel graph window and in the other channel graph window select the folder of the target channel. Now drag a link from the source to the target from one window into the other window. The link will be created in the form of a shortcut.

Multiple Channelgroups

With multiple channelgroups you are able to create powerful applications. In short, you are able to link channels between two channelgroups. We strongly recommend you use this feature although it can be sometimes hard to understand. There are a few tutorials available that will teach you to create a simple multi channelgroup project.

Channelgroup Interface

You can give a channelgroup an interface by changing the state of some channels. An interface defines how a channelgroup can be used by other channelgroups. It defines what channels are "public" and what parameters are available. You can view the interface of a channelgroup through the Group Interface Window (see Group Interface documentation).

There are three different states:

  • Public Channels - A channel must be public (available to the outside world) before a link can be created to it. When a channel is public it will be colored red. This state will allow the channel to be a link to a "Public Caller" channel.
  • Public Caller Channels - This state of a channel will allow you to define to what other channelgroup the link should go. You might see this as a hyperlink (link to another file that might be present). This state will change the color of the channel to blue and will show a window that will allow you to select a target channelgroup and "Public Channel".
  • Parameter Channels - A parameter will allow you to add child link positions to the "Public Channel" in another channelgroup. Every time you create a new parameter in the target channelgroup you will get an extra child link position under a "Public Caller Channel" in the source channelgroup.

You can change the state of every channel type. You should match any "Public Caller" and "Public" channel type if you want to create a link between the two types through the Public Caller Interface window.

Here is some more detailed information on each of the channel states:

Public Channel state

A public channel is a channel that can be a child of a parent in another channelgroup. There comes no dialog with this state, and you are able to turn this state off again.

Public Caller Channel state

When you want to link a "Public Channel" (target) from another channelgroup to one of the channels in your current channelgroup (source) you will first need to add a channel with the same type as the target. You can then change this source into a "Public Caller" and configure it through the dialog so it will point to the target.

The dialog that that is shown when you right click on the Public Caller channel and select channel properties, this will allow you to select one of the currently loaded channelgroups and show a list of Public Channels in that channelgroup. If no channel of the same type is found you will be told that the "Target group and traget public channel is not found". You will only see a list of public channels that match the type of this channel. When a match is found you can select the correct one. Before you can close the window you might want to turn on the "auto-load" feature so it will be automatically loaded the target channelgroup next time the source channelgroup is loaded and this channel is used.

Please note that the "Public Caller" will not have any child link positions, although the original channel could have some. If you want children linked to this channel you should add "Parameter Channels" to the target channelgroup.

Parameter Channel State

A parameter channel will allow you add child link positions to a "Public Caller" channel. To create a parameter you should first add a channel with the type you want to have as a parameter. You can then change the channel into a "Parameter Channel". Please make sure you change a new channel, because all data in the channel is lost when it is turned into a parameter channel.

When you've successfully linked a "Public Caller" (source) channel to a "Public" (target) channel and you add some parameters to the target channelgroup there will automatically appear some child link positions on the bottom of the source with the same type as the parameter. Please note that every parameter has a number. This is the order of the channels. If you want to create a child that can use "CallChannel" you should use the All Types channel as a parameter.

You are unable to change the state of the channel back to normal. Just delete the channel and add new channel.

Loading multiple channelgroups

Channelgroups are loaded into a pool (of channelgroups). A pool is some sort of array, this array can have different channelgroups loaded. Most times you will only need one channelgroup per pool. This pool name is important for channelgroups to locate each other. So make sure you define useful names when loading or creating a new channelgroup in a new pool of your current project.

You can load more than one channelgroup at the same time into memory. You can view all loaded channelgroups through the "Group List" window (see: Group List). Through the "Import..." selection in the "File" menu you are able to add a channelgroup into your current project. You can then drag a loaded channelgroup into any "Channel Graph Window".

You can also load channelgroups through the dynamic loading system. There is a set of channels available that allows you to load a channelgroup from disk or Internet into memory.

Auto loading

All "Public Caller" channels have an properties window where you can select if a channelgroup should be loaded automatically. If a channelgroup is loaded automatically, it will be loaded when the "Public Caller" channel is accessed for the first time. Quest3D will then try to load the channelgroup from disk. This is extremely useful and it is recommended you always use this feature if you are creating an offline program. When you are creating Internet based applications or a large number of channelgroups, you should consider using dynamic loading.

Please note that you must first save a channelgroup before it can be auto-loaded. When the "auto-load" checkbox is disabled, you should first save the selected channelgroup.

When a channelgroup can't be auto loaded (or auto load is not turned on) this is visualized by the name of the "Public Caller" channels pointing to the group that can't be found. To make the "Public Caller" find the other group again you will have to load it by hand using the "Open..." function of the file menu or use dynamic loading and specify the same pool name.

Linking between channelgroups

To aid you in creating "Public" and "Public Caller" channels you can use two "Channel Graph" windows. In the default layout of Quest3D you will find the main Channel Graph window and a small one under the tab "Channel Graph" in the right corner.

When you've loaded two channelgroups and each window holds another channelgroup you can drag a link between two channels from the window to window. A "Public Caller" channel will be automatically created, and the child will automatically become a "Public" channel.

Array of Groups

You can create an array of channelgroups. This is extremely useful if you are using the same set of channels for larger operations. The channelgroups you load into an array don't need to be the same, you can load any number of different channelgroups into a pool. But, to work with them correctly, they need to have the same interface.

Available Windows

Channel Graph Window

Actual visual representation of your program in a graph of channels.

  • Channel Graph

Template List

List of templates. You can drag templates of channels (from small routines to entire programs) into the Channel Graph Window.

  • Template List

Group List

List of loaded channelgroups, their pool name and file location.

  • Group List

Channel List

List of all available channels. These can be dragged into the Channel Graph Window.

  • Channel List

Group Interface

Public Channel and Parameter Channel properties

  • Group Interface

Channel Info

Gives more information on the channel currently under the mouse.

  • Channel Information

Toolbar Buttons

Here is a list of all the toolbars that are available for the Channel Graph:

  • 1 - Copy Selection - This will copy the currently selected channels to the clipboard. You are then able to paste them multiple times into the same or another channel group.
  • 2 - Paste - Paste previously copied channels into the current channelgroup.
  • 3 - Cut Selection - This will cut the currently selected channels and place them on the clibboard. Please note that the channels are deleted from the graph. You are able to Paste them again, but all current links will remain broken.
  • 4 - Delete - Delete the selected channels. Please make sure you have created a snapshot if you think this might impact your current work.
  • 5 - Create Dir from Selection - Create a new folder and place all currently selected channels inside that folder.
  • 6 - Select All - Select all channels, folders and items that are currently in the channel graph
  • 7 - Invert Selection - Deselect the selected channels, folders and items that are selected and select those that were not selected.
  • 8 - Display Type - The description of the channel will be set to the type of the channel. Can only be selected when "Display Type" is selected.
  • 9 - Display Name - The description of the channel will be set to the name of the channel. You are able to change the name yourself. Can only be selected wieh "Display Type" is selected.
  • 10 - Zoom In - Zoom into the channel graph.
  • 11 - Zoom Out - Zoom out the channel graph.
  • 12 - View All - Zoom the view so all channels and folders are visible in the screen.
  • 13 - View Selected
  • 14 - Convert to Public - This will make the currently selected channel a public channel.
  • 15 - Convert to Parameter - This will make the currently selected channel a parameter channel. This can't be reversed.
  • 16 - Convert to Public Caller - Change the currently selected channel into a Public Caller Channel. This can't be reversed.
  • 17 - Create new Folder - Create a new directory. This new directory will be placed in the middle of the channel graph.
  • 18 - Create new Comment - This will create a new comment item and place it with a default text in the middle of the channel graph.
  • 19 - Channel Properties - Open the properties dialog of the currently selected channel. When not available, the general channel properties will be show.
  • 20 - Channel Base Properties - Open the properties dialog of the base class of the channel.
  • 21 - Channel Link Properties - Open the channel link properties dialog. Often called the general properties dialog.
  • 22 - Rename Channel - Rename the currently selected channel.
  • 23 - Help on selected - Show the documentation of the currently selected channel
  • 24 - Set Start Channel - Changes the currently selected channel into the start channel.
  • 25 - Take Snapshot - This will make a snap shot of the currently loaded and show channel group.

One Level Up - Editor

Back to Main Index

Categories: Reference Manual | Editor | Channels Section


ChannelSwitch - Quest3D

ChannelSwitch

Contents

  • 1 ChannelSwitch
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

ChannelSwitch

General

Switch any type of channel

Children

  1. Selector - Value
    • What child to switch, 0 (zero) is the first of the "Replacing Channels"
  2. Replacing channels - All Types Channel
    • Link any number of channels to this position with the configured channel type.

Description

You can use this channel to switch children of the parent this channel is linked to.

For example: You can switch textures by linking this channel to a Surface and link a Value and two Texture channels to this channel. Now you can switch between the first and the second texture by setting the value to zero or one.

Before linking you should first set the type of channel it should represent. You can do this in the channel dialog that is displayed here.

First select the channel type you would like this channel to switch and then click on the "Set" button. You will get a warning that this channel can only be set once. Click on "OK" to set the new type. If you would like to change the type later you will need to delete the channel and add another one.

When the ChannelType is set you will be able to see what type this channel is set to in this dialog.

Note that you are not allowed to directly link a parameter to a public channelswitch. For value channels you can link a normal value channel between them.

CallChannel

Will also forward any CallChannel to the switched (selected) child

Applications

Often used for switching between textures, camera's and text channels.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


ChannelTemplate - Quest3D

ChannelTemplate

Contents

  • 1 Channel Name
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Remarks
    • 1.7 Example

Channel Name

Missing Documentation.
WARNING THIS IS NO ACTUAL CHANNEL BUT A TEMPLATE FOR DOCUMENTING CHANNELS

General

Missing Documentation.
Some General info about this channel

Children

  1. Childlink Name - Channel Type
    • Childlink explanation

Description

Missing Documentation.
Description of this channel

CallChannel

Missing Documentation.
What happens when the channel is called.

Applications

Missing Documentation.
Where and in what typical situation is this channel used.

Remarks

Missing Documentation.
If Any notes or other comments they can go here, else delete section.

Example

Missing Documentation.
If Any examples they can go here, else delete section.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Incomplete


SDK/Channels/ChannelType - Quest3D

SDK/Channels/ChannelType

< SDK | Channels(Redirected from ChannelType)
Jump to: navigation, search

Struct definition

struct ChannelType { char name[80]; GUID guid; GUID baseguid; int mversion; int miversion; int version; DWORD pluginType; };

Description

This structs holds information about the type of a channel. This struct is often used throughout Quest3D when the type of a channel or child link position is needed.

Data members

Name | Description
name | NULL terminated string that holds the name of the channel. The name of the channel should not exceed 60 characters.
guid | The GUID that is used to determine the type of the channel. This is an unique value and no other channel will have this same GUID.
baseguid | A GUID that is used to determine the base type of a channel. This GUID always matches the GUID of another channel.
mversion | Major version number
miversion | Minor version number
version | build version number
pluginType | This is one of the following constants:
PLUGINTYPE_STANDARD | Default setting, normal channel setting
PLUGINTYPE_HIDDEN | This channel should not be shown in the channel drag window. This is often used for management channels that should not be used by the user. Also all converters and importer channels have this constant set.

Return value

Returns a pointer to a channel that can be type-casted or NULL if the requested channel could not be found.

Related Documentation

GetChannelType

One Level Up - Channels

Back to Main Index


SDK/Channels/ChannelType - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/ChannelType

From Quest3D

< SDK | Channels
Jump to: navigation, search

Struct definition

struct ChannelType { char name[80]; GUID guid; GUID baseguid; int mversion; int miversion; int version; DWORD pluginType; };

Description

This structs holds information about the type of a channel. This struct is often used throughout Quest3D when the type of a channel or child link position is needed.

Data members

Name | Description
name | NULL terminated string that holds the name of the channel. The name of the channel should not exceed 60 characters.
guid | The GUID that is used to determine the type of the channel. This is an unique value and no other channel will have this same GUID.
baseguid | A GUID that is used to determine the base type of a channel. This GUID always matches the GUID of another channel.
mversion | Major version number
miversion | Minor version number
version | build version number
pluginType | This is one of the following constants:
PLUGINTYPE_STANDARD | Default setting, normal channel setting
PLUGINTYPE_HIDDEN | This channel should not be shown in the channel drag window. This is often used for management channels that should not be used by the user. Also all converters and importer channels have this constant set.

Return value

Returns a pointer to a channel that can be type-casted or NULL if the requested channel could not be found.

Related Documentation

GetChannelType

One Level Up - Channels

Back to Main Index


Tutorials/Manual/Chapter 1.10: Publication - Quest3D

Tutorials/Manual/Chapter 1.10: Publication

< Уроки | Руководство(Открыто по ссылке Раздел 1.10: Публикация)
Jump to: navigation, search

Содержание

  • 1 1.10 Публикация
    • 1.1 Файлы просмотрщика: .q3d
    • 1.2 Internet ActiveX: .q3d и .htm
    • 1.3 Самостоятельные программы: .exe
    • 1.4 Установочные файлы: .exe
    • 1.5 Лицензионные взносы
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Шаг за шагом
      • 2.2.1 Создание самостоятельной программы
      • 2.2.2 Создание Web страницы
      • 2.2.3 Создание программы просмотрщика Quest3D Viewer
      • 2.2.4 Создание пакета установки
      • 2.2.5 Создание скринсейвера
    • 2.3 Законченные сцены
  • 3 Смотрите также

1.10 Публикация (Publication)

В данной точке, проект Quest3D может быть завершен и готов к распространению. Независимо от того, является ли он свободным скринсейвером или расширенным коммерческим тренировочным приложением, программа Quest3D должна иметь возможность быть экспортированной из редактора и сохраненной в формате, доступном для целевой аудитории.

В зависимости от лицензии Quest3D, с которой вы работаете, доступен ряд публикационных опций.

Возможность публикации типа | Lite (Discontinued) | Creative - Power - VR
.q3d файл проигрывателя | Yes | Yes
Web приложение | Yes | Yes
Скринсейвер | Yes | Yes
Самостоятельный запускной .exe | No | Yes
Установочный файл | No | Yes

Проекты, опубликованные в Lite Edition будут отображать всплывающее окно Quest3D при запуске.

Все программы Quest3D требуют установленный на
целевом компьютере DirectX 9.0 или выше. DirectX -
- это свободный пакет расширений для Microsoft
Windows, который может быть закачан с сайта:
http://www.microsoft.com/directx/download/
[~10 MB]

Файлы просмотрщика (Viewer files): .q3d

Проекты Quest3D могут быть опубликованы в файлы Просмотрщика (Viewer) с расширением ‘.q3d’. Программы Quest3D, опубликованные таким образом могут быть запущены с помощью просмотрщика Quest3D Viewer простым запуском файла ‘.q3d’.

Пакет Quest3D Viewer Package должен быть установлен
на целевом компьютере для поддержки работы файлов
проектов .q3d. Пакет Quest3D Viewer Package может
быть свободно закачан с сайта:
http://www.quest3d.com
[~1.6 MB]

Internet ActiveX: .q3d и .htm

Файлы типа ‘.q3d’ также могут быть просмотрены в интернет броузере, поддерживающем ActiveX. Файл ‘.q3d’ должен быть привязан к обычной веб-странице для возможности обзора. Веб-страница, содержащая элементы медиа Quest3D автоматически попытается скачать и установить пакет Quest3D Viewer Package с вебсайта Quest3D.com. Пользователь может отменить эту операцию.

Самостоятельные программы (Stand-alone programs): .exe

Проект Quest3D также может быть опубликован в самостоятельный самозапускающийся файл ‘.exe’. Кроме DirectX этот тип публикации не требует более никаких других дополнительных компонентов.

Установочные файлы (Installation files): .exe

Установочными файлами являются файлы архивов ‘.exe’, копирующих и распаковывающих программу в определенную директорию на жестком диске.

Лицензионные взносы (License fees)

Независимо от того, с каким видом лицензии Quest3D вы работаете, разработчики из Act-3D не требуют от вас никаких дополнительных взносов. После приобретения самого пакета Quest3D больше никаких дополнительных затрат.

Урок

Следующий урок нацелен на ознакомление вас с различными типами публикации. Обсуждение проходит в таком порядке - файл проекта ‘.q3d’, самостоятельная ‘.exe’ программа, установочный файл и веб приложение.

Необходимая сцена Quest3D:

  • ..\Tutorials\1.10 – Publication\Publication.cgr

Шаг за шагом:

Создание самостоятельной программы

  • Откройте сцену ‘Publication.cgr’. Она содержит компактную продукционную визуализацию сцены.
  • Из Пользовательского Меню выберите ‘File > Publish...’. Появится окно ‘Project Publishing’ (’Публикация Проекта’).

  • Введите ‘Product Visualisation’ в боксе названия ‘Title’.
  • Выберите в типе публикации (Publish type) “Executable”
  • Нажмите на кнопку ‘Browse’ (’Обзор’) для задания директории и имения сохраняемого проекта.
  • Выберите папку ‘..\Tutorials\2.9 – Publication\’.
  • Введите ‘Product_Visualisation’ боксе ‘File name’ (’Имя файла’) и нажмите ‘Save’ для подтверждения.
  • Нажмите далее (Next)
  • В окне настроек установки (‘Installer properties’) убедитесь, что отмечен бокс ‘Publication.cgr’.

  • Нажмите кнопку ‘Finish’.
  • Линейка создания самозапускащейся программы отобразит прогресс публикации.
  • Минимизируйте программу-редактор Quest3D с помощью нажатия на иконку минимизации в верхнем правом углу экрана.
  • На Рабочем Столе дважды кликните на иконку ‘Мой Компьютер’.

  • Перейдите в следующую папку:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\2.9 – Publication\

  • Найдите файл ‘Product_Visualisation.q3d’ и дважды кликните по нему. Сцена загрузится и будет запущена с помощью просмотрщика Quest3D Project Viewer.
  • Протестируйте сцену, зажав правую клавишу мыши и перетягивая ее для вращения по орбите вокруг 3D объекта.
  • После этого нажмите клавишу ‘Escape’ для выхода из приложения.

Обратите внимание на то, что Quest3D Project Viewer
не обязателен для запуска самостоятельных ‘.exe’
файлов, созданных Quest3D. Тем не менее,DirectX 9.0
или выше должен быть установлен.

Создание Веб страницы

  • Вернитесь в Quest3D.
  • Из меню приложения, выберите ‘File > Publish...’. Появится окно публикации проекта ‘Project Publishing’.
  • Введите ‘Product Visualisation’ в боксе наименования ‘Title’. Если вы будете повторно публиковать проект, менеджер публикации запомнит название.
  • Выберите тип публикации “Web Page”
  • Нажмите на кнопку ‘…’ для определения папки и имени сохраняемой публицистики.
  • Перейдите в папку ‘..\Tutorials\2.9 – Publication\’.
  • Введите ‘Product_Visualisation’ в боксе имени файла ‘File name’ и нажмите ‘Save’ для подтверждения.
  • Нажмите Next
  • В окне настроек установки ‘Installer properties’, убедитесь, что бокс для ‘Publication.cgr’ отмечен.
  • Нажмите кнопку ‘Finish’.
  • Линейка создания публикации отобразит уровень продвижения работы.
  • Минимизируйте редактор Quest3D, сверните его.
  • На Рабочем Столе дважды щелкните по иконке ‘Мой Компьютер’.
  • Перейдите в следующую папку:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\2.9 – Publication\

  • Найдите файл ‘index.htm’ и дважды щелкните по нему. Сцена будет загружена и запущена с помощью веб просмотрщика. При запуске просмотрщик проверяет наличие обновлений. Если просмотрщик не установлен, он установится автоматически.
  • Протестируйте сцену, зажав правую клавишу мыши и облетая вокруг 3D объекта.
  • Когда закончите, закройте веб броузер для выхода из приложения.
Также обратите внимание на то, что приложением
является файл ‘.q3d’. Файлы ‘.htm’, ‘.q3d’ и
необходимые *.cgr файлы должны быть выгружены на
фтп сервер перед тем, как другие смогут просмотреть
приложение веб страницы в интернете.

Создание проекта просмотрщика Quest3D Viewer

  • Вернитесь в редактор Quest3D.
  • Из меню приложения выберите ‘File > Publish...’. Появится окно ‘Project Publishing’.
  • Введите ‘Product Visualisation’ в бокс наименования ‘Title’. Если вы будете повторно публиковать проект, менеджер публикации запомнит название.
  • Выберите тип публикации “Quest3D Viewer”
  • Нажмите на кнопку ‘…’ для задания папки и имени сохраняемого файла публикации.
  • Перейдите в папку ‘..\Tutorials\2.9 – Publication\’.
  • Введите ‘Product_Visualisation’ в боксе ‘File name’ и нажмите ‘Save’ для подтверждения.
  • Нажмите Next
  • В коне настроек ‘Installer properties’, убедитесь, что бокс ‘Publication.cgr’ выделен.
  • Нажмите кнопку ‘Finish’.
  • Индикатор процесса публикации отобразит прогресс действия.
  • Сверните редактор Quest3D, нажав на иконку сворачивания в верхнем правом углу экрана))).
  • На рабочем столе Windows Desktop, дважды щелкните на иконку ‘Мой Копмьютер’.
  • Перейдите в следующую папку:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\2.9 – Publication\

  • Найдите файл ‘Product Visualisation.q3d’ и дважды щелкните по нему. Сцена будет загружена и запущена с помощью просмотрщика Ques3D.
  • Протестируйте сцену, зажав правую клавишу и перетянув мышь для вращения вокруг 3D объекта.
  • Когда закончите, нажмите клавишу ‘Escape’ для выхода из приложения.
Обратите внимание, что Quest3D Project Viewer и
DirectX 9.0 или выше должны быть установлены на
компьютере для того, чтобы иметь возможность
запускать ‘.q3d’ файлы.

Создание установочного пакета (Installer)

  • Вернитесь в программу-редактор Quest3D.
  • Из меню приложения выберите ‘File > Publish...’. Появится окно ‘Project Publishing’.
  • Введите ‘Product Visualisation’ в бокс наименования ‘Title’. Если вы будете повторно публиковать проект, менеджер публикации запомнит название.
  • Выберите тип публикации “Installer”
  • Нажмите на кнопку ‘…’ для задания папки и имени сохраняемого файла публикации.
  • Перейдите в папку ‘..\Tutorials\2.9 – Publication\’.
  • Введите ‘Product_Visualisation Installer’ в боксе ‘File name’ и нажмите ‘Save’ для подтверждения.
  • Нажмите Next
  • В окне настроек установщика (Installer properties) задайте путь к папке и путь в меню Пуск.

  • Если вы поставите галку на опции 'Run project after installation' (запустить проект после установки), проект запустится автоматически после завершения установки.
  • Нажмиет Next
  • В окне ‘Installer properties’, убедитесь, что бокс ‘Publication.cgr’ отмечен.
  • Нажмите кнопку ‘Finish’.
  • Индикатор процесса публикации отобразит прогресс действия.
  • Сверните редактор Quest3D, нажав на иконку сворачивания в верхнем правом углу экрана.
  • На рабочем столе Windows Desktop, дважды щелкните на иконку ‘Мой Копмьютер’.
  • Перейдите в следующую папку:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\2.9 – Publication\

  • Найдите файл ‘Product Visualisation Installer.exe’ и дважды щелкните по нему.
  • Диалог установки отобразит путь, который мы задали в менеджере установки, но он может быть изменен с помощью кнопки Browse.

  • Нажмите на кнопку Install для начала установки.
  • Перейдите в кнопку Пуск, в программах вы должны найти элемент Quest3D>Product Visualisation.

  • Нажав на этот элемент вы запустите приложение.
  • Это приложение на данный момент будет использовать просмотрщик Quest3D, который был включен в установочный пакет.

Создание скринсейвера (Screen Saver)

  • Вернитесь в программу-редактор Quest3D.
  • Из меню приложения выберите ‘File > Publish...’. Появится окно ‘Project Publishing’.
  • Введите ‘Product Visualisation’ в бокс наименования ‘Title’. Если вы будете повторно публиковать проект, менеджер публикации запомнит название.
  • Выберите тип публикации “Screen saver”
  • Нажмите на кнопку ‘…’ для задания папки и имени сохраняемого файла публикации.
  • Перейдите в папку ‘..\Tutorials\2.9 – Publication\’.
  • Введите ‘Product_Visualisation scr’ в боксе ‘File name’ и нажмиет ‘Save’ для подтверждения.
  • Нажмите Next
  • Окно установок скринсейвера отобразит стандартный путь установки для скринсейвера.

  • Нажмите Next
  • В окне ‘Installer properties’ убедитесь, что бокс ‘Publication.cgr’ отмечен.
  • Нажмите кнопку ‘Finish’.
  • Индикатор процесса публикации отобразит прогресс действия.
  • Сверните редактор Quest3D, нажав на иконку сворачивания в верхнем правом углу экрана.
  • На рабочем столе Windows Desktop, дважды щелкните на иконку ‘Мой Копмьютер’.
  • Перейдите в следующую папку:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\2.9 – Publication\

  • Найдите файл ‘Product Visualisation Installer scr.exe’ и дважды щелкните по нему.
  • Диалог установки отобразит путь, заданный нами в менеджере публикации, но он может быть изменен с помощью клавиши Browse.
  • Нажмите на кнопку Install для запуска установки.
  • Перейдиет в окно Свойств Экрана.
  • Нажмите на закладку Заставок

  • Выберите Product Visualisation в боксе выбора скринсейверов.
  • Протестируйте сцену, зажав правую клавишу и перетягивая мышь для вращения вокруг 3D объекта в боксе предварительного просмотра.

Законченные сцены:

  • ..\Tutorials\1.10 – Publication\Product Visualisation.q3d
  • ..\Tutorials\1.10 – Publication\Product Visualisation.exe
  • ..\Tutorials\1.10 – Publication\Product Visualisation Installer.exe
  • ..\Tutorials\1.10 – Publication\Product Visualisation scr.exe
  • ..\Tutorials\1.10 – Publication\index.htm

См. также

Публикация проектов Quest3D

Перевел Ovod, 2008

Назад


Chapter 2.1: 3D Objects - Quest3D

Chapter 2.1: 3D Objects

Содержание

  • 1 2.1 3D Объекты
    • 1.1 Текстуры
    • 1.2 Объекты в Quest3D
    • 1.3 Внешний вид раздела Объектов
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Шаг за шагом
    • 2.3 Законченная сцена

2.1 3D Объекты (3D Objects)

Компьютерные 3D сцены состоят из виртуальных объектов. Внешний вид этих объектов определяется рядом элементов. Следующее изображение отображает кубический объект.

Вершина (‘vertex’) – это одиночная точка в 3D пространстве. Вершины определяются координатами X, Y и Z. Изображение ниже показывает вершины кубического объекта.

Простые модели, такие, как куб, состоят всего из нескольких вершин (или углов), в то время, как сложные объекты, такие, как машины, здания и персонажи могут состоять из тысяч таких точек.

Поверхности (‘Surfaces’) состоят из полигонов (‘polygons’). Полигон может обладать любым количеством вершин, хотя в интерактивной графике они обычно представлены в форме треугольников и четырехугольников (3 и 4 вершины, соответственно). Полигоны Quest3D состоят из максимум 3 вершин. Изображение ниже показывает кубический объект, поделенный на треугольные полигоны.

Текстуры (Textures)

Отдельным полигонам может быть присвоен цвет, но обычно, для придания деталей используются другие средства. Текстура (‘texture’) – это изображение, которое может быть натянуто на 3D форму. Ниже приведен пример.

В графике реального времени для задания цвета (color) и прозрачности (transparency) часто используются текстуры. На изображении ниже, текстура натянута на сферу и определяет ее цвет.

Следующее изображение показывает пример текстуры прозрачности (transparency texture). Прозрачность определяется черно-белым изображением, от черного (полностью прозрачный) до белого (полностью непроницаемый).

Применение альфа текстуры к объекту сферы выше, привело к результату, изображенном справа.

Объекты в Quest3D

3D объекты в Quest3D делятся на две большие части (motion) и (surface).

К каналу ‘Motion’ привязываются три вектора Vector. Они описывают позицию (position), ориентацию (rotation) и размер (size) объекта, соответственно.

Каждый из векторов Vector, сам по себе, состоит из трех присоединенных к нему значений Value. При создании анимации, эти значения Value могут быть заменены каналами манипуляторов Envelope. Анимация будет рассмотрена в Разделе 2.2.

Фактическая форма 3D объекта в Quest3D описывается во второй части структуры. Привязанные к каналу Surface, по порядку, 3D ObjectData, Material и Texture.

Канал 3D ObjectData содержит вершины и полигоны объекта. Он также содержит информацию о том, как натянуть текстуру на форму.

Канал Material разделен на ряд аспектов: Diffuse (рассеивание), Emissive (эмиссия), Specular (блеск), Power (мощность), Alpha Diffuse (альфа рассеивание) и Texture Blend Factor (фактор сглаживания текстуры).

Вектор Diffuse содержит цвет объекта и состоит из трех компонентов: red (красный), green (зеленый) и blue (синий), или ‘RGB’. Вектор Emissive описывает величину ‘самостоятельной освещенности’ модели. Без источников освещения в сцене, объект с вектором эмиссии (0, 0, 0) будет черным. Вектор Specular определяет цвет и интенсивность блика, в то время, как значение Power регулирует размер блика. Значение Alpha Diffuse определяет прозрачность объекта. Значение Texture Blend Factor определяет, как сильно текстура смешивается с цветом Diffuse.

Канал Texture представляет действительное изображение текстуры, примененное к поверхности. Он содержит диффузию diffuse (color)изображения, а также может содержать alpha изображение.

Настройки материалов и текстур могут быть изменены в комнате объектов Object Section.

Внешний вид комнаты объектов Object Section:

1 | Меню приложения | Содержит стандартные функции, такие, как управление файлами, конфигурация и справка.
2 | Панель инструментов | Иконки для управления файлами и камерами.
3 | Кнопки выбора разделов | Кнопки для быстрого переключения между комнатами.
4 | Кнопки Run, Run/Edit, Edit | Контролируют обработку пользовательского ввода.
5 | Закладка ‘Properties’ | Свойства материала объекта.
6 | Закладка ‘Surface’ | Прозрачность, смешивание и сортировка объектов.
7 | Закладка ‘Material’ | Материалы, хранящиеся в папке материалов.
8 | Закладка ‘Texture Lighting’ | Запекание текстур световых карт.
9 | Закладка ‘Animation 3D View’ | Отображает сцену целиком.
10 | Закладка ‘Object 3D View’ | Отображает выделенный объект.
11 | Закладка ‘Textures’ | Список все текстур проекта.
12 | Закладка ‘Texture Stages’ | Управление наложением текстур по стадиям.
13 | Список Surface | Список всех поверхностей выделенных объектов.
14 | Список Object | Список всех объектов проекта.
15 | Log bar | Сообщения проверок и ошибок.

Урок

Следующий урок сфокусирован на 3D объектах в Quest3D. Он также является введением в объектную комнату Object Section программы.

Необходимая сцена Quest3D:

  • ..\Tutorials\2.1 – 3D objects\3D objects.cgr

Шаг за шагом:

  • Откройте сцену, ‘3D objects.cgr’.
  • Перейдите в комнату Object, нажав на кнопкуна панели инструментов.
  • Нажмите на закладку Animation, где отобразится 3D модель.
  • Нажмите на имя ‘Car’ в списке Object в нижнем правом углу экрана, чтобы выделить его.
  • Нажмите на имя ‘Body’ в списке Surface в нижней части экрана, чтобы выделить его.
  • Взгляните на закладку ‘Material’ в левой части экрана. Она отображает ряд регуляторов.
  • Переместите слайдеры ‘Diffuse’ в различные позиции. Обратите внимание на то, как изменяется цвет объекта.
  • Зажмите клавишу ‘shift’ и потяните один из слайдеров. Обратите внимание, что изменение повлияло на все три слайдера.
  • Перейдите в Раздел Каналов (Channels Section).
  • Привяжите канал ‘Texture’ к каналу ‘Surface’.

  • Перейдите в Раздел Объектов (Object Section). Обратите внимание на то, что теперь текстура отображается на объекте.
  • Перетяните в различные позиции слайдеры Emissive. Обратите внимание на то, как изменится самосвечение объекта, независимо от источника освещения.
  • Перетяните в различные позиции слайдеры Specular. Обратите внимание на то, как изменятся цвет и интенсивность отблеска на модели. Power (P) управляет размером блика.
  • Нажмите на название ‘Windows’ в списке поверхностей (Surfaces List), чтобы выделить его.
  • Перед тем, как вы сможете работать с прозрачностью, вам нужно включить ее. Перейдите во вкладку ‘Surface’.
  • Из выпадающего списка ‘Transparency’, выберите опцию ‘Alpha Value’.

Обратите внимание, что объект исчез.

  • Вернитесь во вкладку ‘Properties’.
  • Переместите в различные позиции слайдеры ‘Tex Factor’. Обратите внимание на то, как изменилась прозрачность объекта.

Законченная сцена:

  • ..\Tutorials\2.1 – 3D objects\3D objects – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.4: Arrays - Quest3D

Chapter 3.4: Arrays

Содержание

  • 1 3.4 Массивы
    • 1.1 Таблицы
    • 1.2 Менеджер Массивов
    • 1.3 Хранилище данных и ссылки
    • 1.4 Заполнение Массивов
    • 1.5 Команды, операторы и информация
    • 1.6 Циклы For Loop
  • 2 Уроки
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходимые шаблоны
    • 2.7 Шаг за шагом
    • 2.8 Законченная сцена

3.4 Массивы (Arrays)

Переменные (Variables) могут хранить определенные типы информации. Наиболее часто используемыми типами переменных в Quest3D являются value (значение), vector (вектор), matrix (матрица) и text (текст). Все они могут хранить один экземпляр своего типа. Канал Value, например, может хранить строго одно значение.

Массивы (Arrays) могут хранить множество экземпляров информации определенного типа. Каждый из этих экземпляров или записей (records) имеет фиксированное место в массиве и может быть доступен с помощью значения индекса (index value).

Таблицы (Tables)

Массивы в Quest3D всегда являются частью таблицы (table). Окно свойств канала Array Table позволяет создать таблицу и задать ей опорное имя.

Названия столбцов (column) могут быть изменены в любое время – они используются только как пометки.

Два массива с одинаковыми именами не соединяются.
Избегайте дублирования имен во избежание проблемм.

Менеджер Массивов (Array Manager)

Array Manager в Quest3D управляет и отображает содержимое всех массивов проекта, таблично. Доступ к нему может быть получен с помощью закладки ‘Array Manager’ в Разделе Каналов и Разделе Анимации, или с помощью переключения раздел массивов (Arrays Section).

В левой части Менеджера Массивов (Array Manager) вы можете доступные таблицы (Table). После выбора таблицы правая часть отобразит доступные столбцы данной таблицы.

Для создания столбца вы можете использовать кнопку Add Column, после чего перед вами отобразится диалог, в котором вы сможете выбрать тип массива, который вы хотите задать новому столбцу.

Один прямоугольник в Менеджере Массивов (Array Manager) называется записью (record) или полем (field). Большинство типов позволяет прямой ввод или редактирование в менеджере массивов. Нажатие на другие поля (fields) откроет окно настроек соответствующего типа.

Нажатие на кнопку ‘Update Once’ (обновить единожды), обновит все отображаемые столбцы.

Типы данных (Data types) - столбцы массива могут хранить данные различных типов. Отдельно от переменных типов, упомянутых выше (value, vector, matrix и text), также возможно создать массив виртуально любого канала в Quest3D. Это определяется выбором типа из выпадающего списка массива каналов ‘Array Channel’.

Пример этой последней категории включает в себя массивы типа 3D Object или Texture. Более продвинутым случаем может быть массив сетевых значений Network Values.

Обратите внимание, что тип столбца (column) должен
быть задан с помощью кнопки ‘Set’.

Хранилища данных и ссылки (Data storage and references)

Данные хранятся в каналах Array Table (таблица массива). Для доступа и использования данных в проекте Quest3D, необходимы ссылки (references). Существуют различные типы каналов ссылок, по одному на каждый тип столбца. Канал Array Value (значение массива), например, оптимизирован именно для этого типа данных.

Окно настроек различных Array channels используется для определения, к какой таблице и к какому столбцу должна иметь доступ ссылка. Обратите внимание, что столбец таблицы для Array Channel может быть задан только однажды, по причине его Channel Switch-подобной природе.

Заполнение Массивов (Setting Arrays)

Для хранения значения в массиве, используется оператор ‘Set’ соответствующего типа. Желаемая запись в массиве задается с помощью присоединения индексного значения.

Обратите внимание, что Array Channel имеет два потомственных входа. Первый - это индексное значение. Второй может быть использован для подключения к каналу соответствующего типа. Его потомки после этого будут проходить через Array Channel.

Команды, операторы и информация (Commands, operators and info)

Array Command используется для удаления определенной записи из массива. Различные каналы Array Operator и Info могут быть использованы для извлечения информации. Изображение ниже показывает продвинутую структуру.

Циклы For Loop

Комбинация канала For Loop и массивов чрезвычайно мощна. Значение текущей повторяемости ‘Current Iteration’ используется как индекс для массива.

Смотрите Раздел 3.3 для дополнительной информации по циклам For Loop.

Урок

Массивы могут содержать большое колличество данных. Это упражнение показывает, как хранится информация в массиве и как получается доступ к ней.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.4 – Arrays\Arrays 1.cgr

Необходимые шаблоны:

  • Variables \ Arrays \ Array Value
  • Variables \ Value \ Value

Шаг за шагом:

  • Откройте сцену ‘Arrays 1.cgr’. Она содержит один текстовый объект.
  • Убедитесь, что сцена отображается в окне Animation 3D View с помощью камеры проекта Project Camera.
  • Перетяните Array Table в Граф Каналов. Подключите его к каналу ‘Main’. Дважды щелкните по каналу Array Table для открытия окна настроек.
  • Переименуйте таблицу в ‘Menu’ и нажмите кнопку Rename Channel.
  • Нажмите на закладку редактора массивов Array Editor.
  • Выберите таблицу Menu.
  • Создайтре новый столбец, нажав на кнопку ‘Add column’ (добавить столбец).
  • Назовите его ‘Options’.
  • Выберите радио-кнопку ‘Text’ и нажмите ‘OK’ для подтверждения.
  • Добавьте канал Array Text. Дважды щелкните по нему для открытия окна настроек.
  • Из выпадающего списка ‘Table’ выберите ‘Menu’.
  • Из выпадающего списка ‘Column’ выберите ‘Options’.
  • Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения. Канал теперь настроен, как ссылка к правильной таблице и столбцу.
  • Нажмите закладку ‘Array Manager’ (менеджер массивов).
  • Снова выберите таблицу Menu.
  • Нажмите на кнопку ‘Add row’ для создания нового ряда в столбце Options.
  • В первом поле (row ‘0’) столбца ‘Options’, введите ‘Option 1’.
  • Нажмите кнопку ‘Add row’ снова для создания новой записи. Введите ‘Option 2’ в ряду ‘1’.
  • Добавьте две новые записи, “Option 3’ и ‘Option 4’.

  • Нажмите закладку ‘Channel Graph’.
  • Подключите канал ‘Menu: Options’ к каналу ‘2D Text from Texture’. Обратите внимание, что текст в обзорном виде Animation 3D View сменился на ‘Option 1’.
  • Добавьте значение Value и подключите его к каналу ‘Menu: Options’. Переименуйте его в ‘Menu Index’.
  • Смените значение канала ‘Menu Index’ на ‘1’. Обратите внимание, что текст в обзорном виде Animation 3D View сменился на ‘Option 2’.
  • Протестируйте другие опции, сменив значение канала ‘Menu Index’.

Законченная сцена:

  • ..\Tutorials\3.4 – Arrays\Arrays 1 – Complete.cgr

Если хотите, вы можете сохранить данную группу каналов в вашу папку проектов. Следующие действия связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.4 – Arrays\Arrays 2.cgr

Необходимые шаблоны:

  • Variables \ Value \ Array Value
  • Variables \ Matrix \ Set Matrix
  • 3D Items \ Null Object
  • Variables \ Matrix \ Array Matrix

Шаг за шагом:

  • Откройте сцену ‘Arrays 2.cgr’. Она содержит ряд примитивных объектов и частично настроенную таблицу.
  • Перетяните Array Value в Граф Каналов. Дважды щелкните по нему для открытия окна настроек.
  • Из выпадающего списка ‘Table’, выберите ‘Objects’.
  • Из выпадающего списка ‘Column’, выберите ‘Type’.
  • Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Подключите канал ‘Objects: Type’ к первому потомственному входу канала ‘Object Type Switch’.
  • Создайте ярлык канала ‘Current Iteration’ и подключите его к каналу ‘Objects: Type’.
  • Правой клавишей мыши нажмите на канал ‘Object: Type’ и выберите ‘General Properties’ (основные настройки). В окне настроек выберите опцию обновления ‘Continuous’. Нажмите ‘OK’ для подтверждения.
  • Убедитесь, что окно Animation 3D View открыто и отображает сцену с помощью проектной камеры Project Camera.
  • Нажмите закладку ‘Array Manager’. Обратите внимание на два столбца в таблице ‘Objects’; ‘Motion’ и ‘Type’.
  • Введите ‘1’ в первое поле (Ряд 0) в столбце ‘Object Type’. Обратите внимание, что один из примитивов в окне Animation 3D View сменил форму.
  • Введите ‘2’ во втором поле (Ряд 1) в столбце ‘Type’. Обратите внимание, что один из объектов сменил форму.
  • Введите значения для двух других записей на свой вкус. (Примечание: ‘0’ = Куб, ‘1’ = Сфера, ‘2’ = Цилиндр, ‘3’ = Конус).
  • Нажмите закладку ‘Channel Graph’.
  • Перетяните Array Matrix в Граф Каналов и подключите его к каналу Set Matrix. Дважды щелкните на нем, чтобы открыть окно настроек.
  • Из выпадающего списка таблицы ‘Table’, выберите ‘Objects’.
  • Из выпадающего списка столбцов ‘Column’, выберите ‘Motion’.
  • Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Добавьте Value и подключите его к каналу ‘Objects: Motion’, массиву, который вы только что создали. Переименуйте Value в ‘Current Object’.
  • Перейдите в Раздел Анимации.
  • Нажмите на объект ‘Object Mover’ в списке, чтобы выделить его.
  • Подвигайте ‘Object Mover’ в пространстве. Обратите внимание, что один из примитивов движется вместе с ним.
  • Перейдите в Раздел Каналов.
  • Смените ‘Current Value’ на ‘1’.
  • Перейдите в Раздел Анимации.
  • Нажмите на объект ‘Object Mover’ в списке, чтобы выделить его.
  • Подвигайте ‘Object Mover’ в пространстве. Обратите внимание, что примитив, соответствующий индексу ‘1’ перемещается вместе с ним.
  • Перейдите в Раздел Каналов.
  • Дважды щелкните по каналу ‘Objects Table’, чтобы открыть окно его настроек.
  • Создайте новый столбец, нажав на кнопку ‘Add column’. Назовите этот столбец ‘Texture’.
  • Выберите радио-кнопку ‘Array Channel’ и из выпадающего списка выберите ‘Texture’. Нажмите ‘OK’ для подтверждения.
  • Перетяните Array Channel в граф каналов и подключите его к правильному потомственному входу канала ‘Surface’ объекта ‘Box’.
  • Дважды щелкните по ‘Array Channel’, чтобы открыть его окно настроек. Настройте его так, чтобы он стал ссылкой к столбцу Texture в таблице Objects. Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘Current Iteration’ и подключите его к каналу ‘Objects: Texture’.
  • Создайте три ярлыка канала ‘Objects: Texture’ и подключите их к правильным потомственным входам каналов ‘Surface’ объектов ‘Sphere’, ‘Cylinder’ и ‘Cone’, соответственно.
  • Нажмите на закладку менеджера массивов Array Manager.
  • В столбце ‘Texture’ в таблице ‘Objects’, дважды щелкните по первому полю, чтобы открыть окно настроек для этой записи. Найдите и загрузите текстуру. (Resources\Textures\Basic). Обратите внимание на окно Animation 3D View, первый объект (‘0’) теперь обладает текстурой.
  • Загрузите текстуры для остальных трех полей. Обратите внимание, что они отображаются в окне Animation 3D View.

Законченная сцена:

  • ..\Tutorials\3.4 – Arrays\Arrays 2 – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 4.1: Project management - Quest3D

Chapter 4.1: Project management

4.1 Управлением проектом (Project management)

Продвинутые программы Quest3D могут быть сложными проектами. Этот раздел обсуждает управление проектом. Особенное внимание уделяется преимуществам работы с хорошей файловой структурой.

Сложные проекты Quest3D состоят из ряда отдельных подпрограмм. Обычно, подпрограммы могут включать в себя, помимо прочего: 3D окружения, 3D персонажей, анимацию, систему камер, установки освещения, звук, спецэффекты и пользовательский интерфейс.

Создание структуры проекта заблаговременно помогает в планировании проекта. Пустые 'болванки' групп каналов могут быть связаны друг с другом для создания каркаса приложения. Приложение в целом ‘читается’ лучше и становится более доступным для всех членов команды.

Такая структура не только помогает определиться, где находится необходимый на данный момент элемент, но она также упрощает планирование разработки. Конкретные члены команды и чистые сроки могут быть разбиты на подзадачи для выполнения целостного проекта.

Художники могут заниматься импортированием объектов в Quest3D и оттачиванием внешнего вида. Звуковые дизайнеры могут разрабатывать или тестировать музыку. Несколько специализированных программистов могут работать над их соответствующими подпрограммами, не мешая друг другу.

В любой точке времени, в течение процесса разработки, любая подпрограмма может быть обновлена на более новую версию, предоставленную членами команды, работающими над ней.

Будущие проекты могут значительно выиграть при такой структурности работы. Наиболее вероятно, что ряд подпрограмм сможет быть использован вновь. 3D содержимое легко может быть заменено новым. Элементы, такие, как пользовательский интерфейс, могут храниться в виде отдельных составляющих, отвечающих за функциональность и стиль.

Урок

Следующий урок предназначен для помощи в управлении проектом. Данная последовательность действий не является единственно возможной, так как каждый проект имеет свои уникальные особенности. Тем не менее, в целом, прочтение нижеизложенного материала будет полезной практикой.

Шаг за шагом:

  • Возьмите лист бумаги и запишите наименование вашего проекта.
  • Одним предложением постарайтесь передать суть вашего проекта. Будет ли это тренировочная программа? Коммерческая визуализация? Архитектурная презентация? Игра? Что-нибудь еще?
  • Сделайте грубый эскиз 3D сцен, как вы их себе представляете.
  • Сделайте понятный эскиз (или запишите примечания) графического интерфейса пользователя.
  • Соберите список всех необходимых вам элементов. Сначала сконцентрируйтесь на простых подпрограммах, таких, как окружение, система камер и пользовательский интерфейс. Далее поработайте над более детальным списком частей, включая специфическую функциональность, анимацию, текстуры и т.п.
  • Создайте ‘каркасную’ структуру в Quest3D: операясь на различные подпрограммы, создайте группы каналов и свяжите их друг с другом. Используйте ясные и последовательные названия.
  • Запишите любые дополнительные элементы, о которых вы подумали во время создания каркасной структуры в Quest3D.
  • Сделайте примерную оценку того, сколько времени понадобится для создания всех этих элементов.
  • Запишите имена всех членов команды, работающих над проектом.
  • Сгруппируйте все подпрограммы и 3D элементы, отталкиваясь от того, кто и над чем будет работать. Добавьте номера и запишите общее количество времени, отведенное на каждого члена команды.
  • Подумайте о зависимостях между подпрограммами. Работа над некоторыми частями не может быть начата, пока не будут закончены другие. Дополняйте списки там, где необходимо, чтобы закончить значительным, как можно более конкретным планом.
  • Обсудите план с членами команды.
  • Если план слишком велик, разбейте его на три или четыре сегмента. Эти сегменты также могут быть использованы в контрактах с клиентом, для отображения прогресса.
  • Подытожте планирование.
  • При необходимости, запишите компактные предложения, возникшие при обсуждении приложения. Добавьте один или два скриншота при наличии.
  • Обсудите план и предложения по проекту с клиентом. Добавьте коррективы там, где это необходимо.
  • Начните разработку. Постарайтесь придерживаться плана настолько, насколько это возможно.
  • Избегайте добавления новых функций – обычно они только увеличивают время процесса разработки, и ослабляют изначальную концепцию дизайна приложения.
  • Особенно будьте осторожны при добавлении функций, запрашиваемых клиентом. Обсуждайте возникающие предложения с членами команды и прислушивайтесь к их замечаниям. При необходимости предлагайте клиенту альтернативы. Ясно давайте клиенту понять, что добавление функций повлияет на реализацию плана и, наиболее вероятно, потребует определенной компенсации.
  • По возможности планируйте пользовательские тесты. Пригласите кого-нибудь, не имеющего отношения к проекту и попросите его или ее попробовать приложение. Сделайте заметки о любых замечаниях, а также о положительных отзывах. Сделайте (тонкие) изменения в дизайне, если необходимо.
  • Когда приложение уже практически закончено, покажите его клиенту и запишите любые окончательные пожелания.
  • Проведите еще один или два дня, оттачивая приложение.
  • Выпустите версию 1.0.
  • После завершения проекта обсудите производство со всей командой.
  • Учтите обратную связь с клиентом и будьте готовы к технической поддержке.
  • Составьте список того, что было выполнено правильно, и что пошло не так во время разработки.
  • Составьте список всех 3D элементов и подпрограмм, которые могут быть повторно использованы в будущих проектах.
  • При наличии времени между проектами, попросите команду оптимизировать код и 3D модели для будущих проектов. Подпрограммы могут быть превращены в шаблоны Quest3D.
  • При наличии времени работайте над оттачиванием навыков членов команды и их восприятием теоретической информации по новым каналам и функциям, а также проведению тестов.
  • Подготовьтесь к следующему проекту.

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.1: Introduction - Quest3D

Tutorials/Manual/Chapter 1.1: Introduction

< Уроки | Руководство(Открыто по ссылке Раздел 1.1: Введение)
Jump to: navigation, search

Введение

За прошлые годы 3D компьютерная графика штурмом захватила мир. Голливудские фильмы полны анимированными монстрами и целыми чужими планетами. Видео игры предлагают управление фантастическими персонажами и исследование обширных интерактивных миров. Коммерческие и научные презентации также выполняются в 3D. Даже целые тренировочные программы имеют место в виртуальной реальности.

Хотя 3D компьютерная графика достигла потокового статуса, в действительности ее создание все еще требует больших усилий. Только с помощью специализированных инструментов возможно создать убедительный результат своевременно.

Quest3D является отличным программным пакетом для создания интерактивных 3D сцен. Примерами могут быть презентации продукта, архитектурные визуализации, виртуальные тренажеры и компьютерные игры.

Возможности Quest3D объясняются уникальным стилем программирования. Вместо написания тысяч линий сложного кода, разработчикам предоставлена возможность использования широкого набора мощных строительных блоков. Гибкий и легкий в применении, Quest3D отлично подходит дизайнерам, программистам и художникам.

Работа с Quest3D означает разработку в реальном времени: вы работаете непосредственно над конечным результатом. Времени на компиляцию кода или визуализацию изображения практически не затрачивается.

Quest3D обладает ошеломляющим набором графических возможностей. Широкий набор анимированных людей, убедительной растительности, теней, эффектов огня, дыма и реалистичной воды легко могут быть добавлены в сцену. Продвинутые возможности включают в себя имитацию физики, поиск пути, совместимость баз данных и сетевую поддержку.

Эта книга – ваш гид в Quest3D. Она совмещает теорию и практические примеры в форме пошаговых уроков. После чтения этого руководства вы должны будете чувствовать себя более уверенно на пути создания практически любой вообразимой интерактивной 3D сцены.

Добро пожаловать в удивительный мир Quest3D!

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.2: How to use this manual - Quest3D

Tutorials/Manual/Chapter 1.2: How to use this manual

< Уроки | Руководство(Открыто по ссылке Раздел 1.2: Как пользоваться этим руководством)
Jump to: navigation, search

Содержание

  • 1 Как пользоваться этим руководством
    • 1.1 Части
    • 1.2 Главы
    • 1.3 Уроки
    • 1.4 Форматы
    • 1.5 Справочный Материал

Как пользоваться этим руководством

Следующий текст описывает организацию этого руководства.

Части

Эта книга поделена на четыре части.

  • Часть I, ‘Введение’, знакомство с Quest3D.
  • Часть II, ‘Виртуальная студия’, детальное обсуждение 3D объектов и анимации.
  • Часть III, ‘Программирование’, экскурс по сердцу проекта Quest3D– ‘коду’.
  • Часть IV, ‘Экспертный уровень’, описание продвинутых возможностей, некоторые из которых доступны лишь в определенных версиях Quest3D.

Главы

Глава начинается с введения в новый предмет. Далее следует обсуждение различных каналов и функциональностей Quest3D. Наконец, представлены пошаговые уроки для предоставления пользователям практического опыта по теме предмета.

Уроки

После установки Quest3D, законченные сцены каждого урока в этом руководстве могут быть найдены на жестком диске вашего компьютера. По умолчанию они расположены в следующей директории:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\

Форматы

В данном руководстве были использованы следующие форматы.

  • Новые концепции напечатаны жирным шрифтом. Например: строительные блоки Quest3D называются ‘каналами’ (’channels’).

  • Каналы (channels) (одиночные строительные блоки), уже используемые в программе Quest3D, печатаются в одиночных кавычках, с большими заглавными буквами для каждого слова. Например: Соедините канал ‘Logic’ с каналом ‘Start Scene’.

  • Каналы и шаблоны (templates) (строительные блоки), добавляемые из списка шаблонов (Templates List) в программу, печатаются курсивом, с большими заглавными буквами для каждого слова. Например: Добавить канал Value в вашу программу.

  • Расположение каналов и шаблонов в списке шаблонов (Templates List) печатаются, разделяемые обратным слешем. Например: Logic \ Channel Caller

  • Опции меню приложения печатаются в виде последовательностей. Например: ‘File > Save Group As’

  • Файлы и директории печатаются шрифтом Arial. Например: C:\Program Files\Act-3D\Quest3D 3.0\

  • Подкаталоги директории Quest3D описываются следующим образом. Например: ..\Resources\Textures\

Справочный Материал

В качестве дополнительного источника справки к этой книге, Справочный Материал содержит описания каждого из различных каналов Quest3D. Он может быть вызван с помощью нажатия клавиши ‘F1’ во время работы программы.

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.3: Quest3D installation - Quest3D

Tutorials/Manual/Chapter 1.3: Quest3D installation

< Уроки | Руководство(Открыто по ссылке Раздел 1.3: Установка Quest3D)
Jump to: navigation, search

Содержание

  • 1 Установка Quest3D
    • 1.1 Установка Quest3D
    • 1.2 Если окно не появится автоматически:
    • 1.3 Установка DirectX
    • 1.4 Запуск Quest3D

Установка Quest3D

Программа Quest3D и уроки должны быть установлены на вашем компьютере перед тем, как вы сможете работать с ними. Следующие шаги описывают процесс установки.

Установка Quest3D

  • Включите ваш компьютер и подождите, пока Windows будет готов:)))).
  • Вставьте Quest3D cd-rom в ваш cd-rom привод компьютера.
  • Через некоторое время появится окно, спрашивающее, хотите ли вы установить Quest3D.

Если окно не появится автоматически:

  • На рабочем столе дважды кликните на иконку ‘Мой Компьютер’.

  • Дважды кликните на иконку, соответствующую cd-rom.
  • Дважды кликните на файл ‘Autorun’ или ‘Autorun.exe’.
  • Спустя некоторое время, всплывет окно, запрашивающее, хотите ли вы установить Quest3D.
  • Выберите опцию, ‘Install Quest3D’.
  • Разрешите установку, нажав кнопку ‘Next’.
  • Стандартная установочная директория:
    C:\Program Files\Act-3D\Quest3D 3.x\
  • Рекомендуется использовать стандартную установочную директорию. Подтвердите путь с помощью кнопки ‘Next’.
  • Рекомендуется создать ярлык к программе Quest3D на рабочем столе. Нажмите ‘Next’ для подтверждения.
  • Нажмите ‘Install’. Quest3D теперь будет скопирован на ваш компьютер. Это может занять некоторое время.
  • Нажмите ‘Finish’ для завершения установки.
Quest3D связан с дополнением к Microsoft Windows, называемым
‘DirectX’.
Оно содержит продвинутые графические и звуковые функции.
DirectX 9.0c или выше должен быть установлен перед использованием
Quest3D.

Установка DirectX

  • Из меню установки Quest3D cd-rom, выберите опцию ‘Install DirectX 9.0’.
  • Выберите вашу операционную систему и язык.
  • Подтвердите установку, нажав ‘Yes’.
  • Если вы понимаете и согласны с лицензионным соглашением, нажмите ‘Yes’.
  • DirectX теперь будет установлен на ваш компьютер.

Запуск Quest3D

  • Нажмите кнопку Пуск Windows.

  • Из меню Пуск, выберите:
    Programs > Act-3D > Quest3D 3.x > Quest3D 3.x
  • После запроса, введите ваш лицензионный ключ Quest3D.
  • Появится стартовый экран Quest3D. Кликните на него для начала работы с программой.

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.4: Example scenes - Quest3D

Tutorials/Manual/Chapter 1.4: Example scenes

< Уроки | Руководство(Открыто по ссылке Раздел 1.4: Демонстрационные сцены)
Jump to: navigation, search

Демонстрационные сцены

Перед тем, как начать ваше обучение, пожалуйста, взгляните на ряд законченных сцен, сопровождающих программный пакет. Они отображают широкий спектр возможностей Quest3D.

Для просмотра демонстрационных сцен:

  • Вставьте Quest3D cd-rom в привод cd-rom вашего компьютера. Через некоторое время, появится окно просмотрщика.

Если окно просмотрщика не появляется автоматически:

  • На Рабочем Столе, дважды кликните по иконке ‘Мой Компьютер’.
  • Дважды кликните на привод, содержащий cd-rom.
  • Дважды кликните на ‘Autorun’ или ‘Autorun.exe’. Через несколько секунд, появится окно просмотрщика.
Во время ознакомления с демонстрациями, постарайтесь определить,
какие элементы использовались и какие из них вы бы хотели иметь
в своих проектах.

Это руководство поможет вам создать сцены, подобные этим демонстрациям и многое другое.

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.5: The Quest3D user interface - Quest3D

Tutorials/Manual/Chapter 1.5: The Quest3D user interface

< Уроки | Руководство(Открыто по ссылке Раздел 1.5: Пользовательский интерфейс Quest3D)
Jump to: navigation, search

Содержание

  • 1 Пользовательский Интерфейс Quest3D
    • 1.1 Меню File
    • 1.2 Управление секциями
    • 1.3 Элементы интерфейса в различных Секциях
    • 1.4 Окна закладок
    • 1.5 Линейка Отчетов
    • 1.6 Граф Каналов
    • 1.7 Группы Каналов
    • 1.8 Добавление каналов в программу
    • 1.9 Шаблоны
    • 1.10 Стандартные действия пользователя
  • 2 Урок
    • 2.1 Шаг за шагом:

Пользовательский Интерфейс Quest3D

Quest3D предоставляет широкий набор мощных возможностей. Программа поделена на ряд ‘Разделов’, чтобы упорядочить все для как можно более удобной работы. Три наиболее важные части Quest3D описаны ниже.

Раздел Channels (Каналы) – это сердце Quest3D. Quest3D отображает раздел Channels при запуске. В разделе Channels вы будете строить фундамент всех создаваемых вами проектов.

Раздел Animation (Анимация) – в нем располагаются и анимируются 3D объекты, камеры и источники освещения. Раздел содержит широкое обзорное окно, прекрасно подходящее для тестирования проектов.

Раздел Object (Объект) – здесь подготавливаются и настраиваются 3D объекты. Quest3D предлагает широкий диапазон опций для настройки свойств поверхности объекта, таких, как цвет и текстура.

Обратите внимание, что существует возможность изменить базовый интерфейс. Поэтому, у различных пользователей Quest3D может выглядеть по разному. В этом руководстве мы будем рассматривать использование стандартного интерфейса. Для дополнительной информации, пожалуйста, обратитесь к разделу ‘Настройка’ в Справочном Материале.

Этот раздел обсуждает только секцию Channels. Разделы Animation и Object будут обсуждены в Части II: ‘Виртуальная студия’ данного руководства.

Меню File

Меню File предоставляет опции для загрузки и сохранения проектов. В дополнение, оно предлагает опции для импортирования 3D объектов из других программ, и публикации проектов Quest3D. Последние будут обсуждаться в более поздних разделах.

Опция ‘New Project’ очищает все загруженные прежде группы каналов и запускает новую рабочую область. В течение некоторых последующих уроков вы можете захотеть очистить проект с помощью этой опции. Ее действие подобно сбросу и перезапуску Quest3D.

‘Open Project’ позволяет вам загрузить одиночную (Channel Group) или файл проекта с другим интерфейсом для Quest3D.

Сохранение одиночной Группы Каналов (Channel Group) в новый файл выполняется с помощью ‘Save Group As’. Для перезаписи вашего текущего файла, используется ‘Save Group’. Использование опции ‘Save All’ позволяет убедиться в том, что проект полностью сохранен.

Обратите внимание, что для новых пользователей ‘Save All’ - самый
 безопасный способ сохранения проекта.

Управление секциями

Доступ к различным секциям в Quest3D может быть получен несколькими путями. Основной метод – использование меню Приложения (Application menu) или кнопки выбора Секций в Инструментальной Панели (Toolbar).

Элементы интерфейса в различных Секциях

Определенные окна и кнопки могут быть найдены в различных Секциях программы Quest3D. Например, секция Channel включает в себя окно Animation 3D View (3D Обзор Анимации).

Это то же окно (того же типа), что и в секции Animation. Окно Animation 3D View показывает обзор проекта ‘в реальном времени’. Изменения и дополнения в программе, сделанные в Channel Graph (Графе Каналов) будут незамедлительно отображены в окне Animation 3D View.

Окна закладок (Tab)

Quest3D имеет множество окно, обладающих Закладками управления (Tabs) для переключения между окнами закладок. Самыми главными закладками в секции Channels являются ‘Template list’ (’Список шаблонов’), ‘Channel list ’ (’Список каналов’) и ‘Search window’ (’Окно поиска’).

Эти окна могут быть доступны с помощью нажатия соответствующего имени Закладки.

Линейка Отчетов (Log Bar)

Log Bar расположен в нижней части экрана программы Quest3D.

Эта линейка уведомляет пользователей об общей информации и некоторых других вопросах. История всех уведомлений, со старта программы, может быть просмотрена после нажатия на кнопку ‘Log’.

Граф Каналов (Channel Graph)

Channel Graph - это окно, в котором выполняется строительство всех структур каналов. Программы Quest3D создаются с помощью строительных блоков. Эти строительные блоки называются ‘channels’ (’каналами’). Ниже приводится изображение каналов в Quest3D.

Информация или функция строительных блоков Quest3D, ‘каналов’. Соответственно, имеет имя ‘channel’.

Группа Каналов (Channel Group)

Изображение ниже показывает пример маленькой группы каналов. Структура каналов называется Channel Group.

Изображение выше также отображает пример пользовательских комментариев (текст ‘Hello world example’). Также мы можем видеть, что некоторые строительные блоки были спрятаны внутри папок.

Добавление каналов в программу

Список Шаблонов (Templates List) в левой части экрана содержит все доступные в Quest3D строительные блоки.

Новые каналы могут быть добавлены в вашу программу с помощью перетягивания названия из Списка Шаблонов (Templates List) в Граф Каналов (Channel Graph). ‘Перетягивание’ означает нажать и удержать левую клавишу мыши, переместить курсор мыши на новую позицию и отпустить левую клавишу мыши.

После того, как вы отпустите кнопку мыши, канал будет добавлен в Граф Каналов (Channel Graph).

Шаблоны (Templates)

Шаблон (Template) - встроенный канал или группа каналов. С помощью шаблонов вы намного ускоряете ваш процесс создания. Шаблоны могут быть добавлены также, как и одиночные каналы.

В примере ниже, шаблон Vector добавлен в Граф Каналов (Channel Graph). Шаблон Vector состоит из четырех каналов.

Стандартные действия пользователя

Многое в пользовательском интерфейсе Quest3D работает также, как и в других программных пакетах Windows. Следующий перечень описывает ряд важных действий в Quest3D. Эти действия задействуются в данном руководстве.

Term | Action
Перемещение курсора в определенную позицию | Перемещение мыши для перемещения курсора мыши в определенную позицию на экране
Нажатие | Нажать клавишу мыши и отпустить
Двойное нажатие | Нажать левую клавишу мыши, быстро отпустить и нажать снова, затем отпустить
Перетягивание мышью | Нажать и удержать левую клавишу мыши и, не отпуская, переместить мышь
Перетягивание из a в b | Нажать и удержать левую клавишу мыши и, не отпуская, переместить курсор на экране в определенную позицию
Выбор элемента | Нажать левую клавишу мыши, когда курсор находится на элементе, и отпустить

Урок

Следующий урок является введением в пользовательский интерфейс Quest3D. Он также более близко рассматривает каналы (строительные блоки). Целью данного урока является ознакомление вас с основами пользовательского интерфейса Quest3D.

Запустите Quest3D:

  • Нажмите кнопку Пуск в Windows.

  • Из открывшегося меню Пуск, выберите следующие опции:
    Программы> Act-3D > Quest3D 3.x > Quest3D 3.x
  • Сначала появится заставка Quest3D. Кликните на нее для работы с программой.

Шаг за шагом:

  • Изучите экран. По умолчанию, Quest3D открывается на секции Channel. Секция Channels – это место, где на самом деле и создается программа, используя строительные блоки, называемые ‘channels’ (‘каналы‘).
  • Из меню Applications Menu, выберите ‘Sections > Animation’ для перехода в секцию Animation.
  • Попробуйте перейти в одну из других секций, выбрав ее из меню приложения.
  • Попробуйте перейти в одну из других секций с помощью нажатия соответствующей кнопки на Инструментальной Панели (Toolbar).
  • Перейдите в секцию Object.
  • Перейдите в закладку ‘Surface’ (’Поверхность’) с помощью нажатия соответствующего названия.

  • Вернитесь в закладку ‘Material’ (’Материалы’).
  • Перейдите в большой Раздел Каналов (Channel Section).
  • Изучите экран. Наиболее широкая часть экрана, с голубым фоном, называется ‘Channel Graph’ (‘Граф Каналов‘). Он содержит все каналы, составляющие вашу программу. На данный момент в нем присутствует только один канал, ‘Project Start’.

  • Поместите курсор мыши на Channel Graph. Приближение и отдаление выполняется с помощью прокрутки колеса мыши.

Если ваша мышь имеет только две кнопки: зажмите клавишу ‘Alt’ на клавиатуре, зажмите правую кнопку мыши и переместите мышь вперед или назад.

Приблизьте вид в Channel Graph для более близкого обзора каналов
проекта.
Отдалите вид для более обширного вида каналов проекта.
  • Поместите курсор мыши на Channel Graph. Зажмите и удержите среднюю клавишу мыши и переместите мышь для перемещения обзорного вида в Channel Graph.

Если ваша мышь имеет только две кнопки: используйте ‘Alt + Left Mouse’ для перемещения обзорного вида.

  • Взгляните на Templates List (Список Шаблонов) в левой части экрана. Он содержит все виды каналов и комбинации каналов с широким диапазоном функций.

  • Нажмите на символ ‘+’, рядом со словом ‘Logic’. Обратите внимание, что структура раскроется, отображая ряд элементов.
  • Переместите курсор мыши на слово ‘Channel Caller’. (Канал Channel Caller используется для создания логического пути вашего проекта. Например, Channel Caller, названный ‘Project Start’ может вызывать другой канал, именующийся ‘Render Scene’ и другой, названный ‘Do User Logic’).

  • Нажмите и удержите левую клавишу мыши и переместите курсор мыши центр экрана, ниже канала ‘Project Start’.
  • Отпустите левую клавишу мыши. Вы только что перетянули канал в Channel Graph.

  • Нажмите на канал ‘Project Start’, чтобы выделить его. Обратите внимание на появившийся красный контур.

  • Нажмите на любое место голубого фона для снятия выделения с канала ‘Project Start’. Обратите внимание на то, что красный контур пропал.
  • Поместите курсор мыши поверх канала ‘Project Start’. Для перемещения канала, зажмите левую клавишу мыши и переместите мышь.

  • Находясь на новой позиции, отпустите левую клавишу мыши. Обратите внимание на то, что канал переместился.
  • Для одновременного выделения множества каналов, растяните вокруг них бокс выделения. Начав с верхнего левого угла в Channel Graph, зажмите левую клавишу мыши. Перетяните мышь вниз и вправо поверх каналов, которые вы хотите выделить. Отпустите кнопку мыши.

На изображении выше, левая клавиша мыши нажата в позиции ‘1’. Затем мышь перемещена в позицию ‘2’, создав бокс выделения и выделив все каналы внутри этого бокса. Выделенные каналы должны будут иметь красную окантовку.

  • Для одновременного перемещения множества каналов, сначала сделайте множественное выделение. Далее, переместите мышь на любой из выделенных каналов. Зажмите левую клавишу мыши и переместите мышь.

После того, как вы отпустите кнопку мыши в новой позиции, все выделенные каналы переместятся в соответствии с новой позицией и друг с другом.

  • Выделите канал ‘Channel Caller’ и нажмите пробел на клавиатуре. Канал будет помещен в папку.

Папка наследует имя канала, на который был наведен курсор мыши
перед созданием папки.
  • Выделите папку и еще раз нажмите пробел, чтобы разгруппировать ее.
  • Выделите канал ‘Channel Caller’ и нажмите клавишу ‘Delete’ для его удаления.

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.6: Channels - Quest3D

Домой | Уроки | Статьи | Категории | Список каналов | SDK | Экспорт | F.A.Q.

Tutorials/Manual/Chapter 1.6: Channels

From Quest3D

< Уроки | Руководство(Открыто по ссылке Раздел 1.6: Каналы)
Jump to: navigation, search

Содержание

  • 1 1.6 Каналы
    • 1.1 Группы Каналов
    • 1.2 Информация Канала
    • 1.3 Пользовательский ввод
    • 1.4 Квадраты множественных связей
    • 1.5 Связывание
    • 1.6 Удаление связей
    • 1.7 Окно Настроек Канала
    • 1.8 Контекстное Меню
    • 1.9 Ярлыки
  • 2 Урок
    • 2.1 Шаг за шагом
    • 2.2 Законченная сцена

1.6 Каналы (Channels)

Программы Quest3D состоят из строительных блоков. Эти строительные блоки называются каналами (channels). Каждый канал имеет определенную функцию.

В Quest3D каналами являются прямоугольные блоки. Канал на изображении ниже называется Value. Он может хранить число.

Маленькие черные квадраты выше и ниже канала называются квадратами связи (link squares). Каналы могут быть соединены друг с другом, между верхними и нижними квадратами связи.

На изображении выше, верхний канал называется Родительским (Parent). Нижний канал называется Потомком (Child). Потомки обычно используются, как входящие или выходящие данные для Родителей.

Входящий квадрат связи, без присоединенного к нему Потомка данных не получает. Обычно, пустые квадраты связи устанавливаются на 0.

Группы Каналов (Channel Groups)

Структура соединенных каналов называется Группой Каналов (Channel Group). Проект Quest3D состоит из одной или более Групп Каналов. Например, одна группа может отображать на экране комнату, в то время, как другая может отображать персонаж. Две Группы Каналов могут быть совмещены для отображения персонажа в комнате.

Информация Канала (Channel information)

Информация по каналу может быть просмотрена с помощью наведения на него указателя мыши. Через некоторое время появится всплывающее окно.

Канал на изображении выше называется ‘My Value’. В дополнение к имени, каждый канал обладает Базовым Типом (Basetype) и Типом (Type). Канал Value имеет Базовый Тип (Basetype) Value, но также имеет Тип (Type) Value.

Канал на изображении ниже называется ‘Clear Screen’.

Этот канал используется для смены цвета фона проекта. Цвета компьютерных программ обычно состоят из красного (red), зеленого (green) и синего (blue) компонентов. Поэтому, цвета обычно хранятся, как набор значений RGB.

Канал ClearScreen принимает три потомка типа Value: по одному для каждого из цветовых компонентов RGB.

Информация квадрата связи может быть просмотрена тем же способом, что и информация канала. Всплывающее окно отобразит название квадрата связи Базовый Тип (Basetype).

Первый квадрат связи канала ‘Clear Screen’ на изображении ниже, называется ‘R’. Он представляет красный компонент цвета канала.

Информационное окно также показывает, что квадрат связи поддерживает только каналы Базового Типа Value. Поэтому канал ‘My Value’ поддерживается, как потомок. На изображении ниже, канал, ‘My Value’ имеет значение 0. Второй и третий квадраты связи канала ‘Clear Screen’ пусты и поэтому также имеют значение 0. Цвет канала ‘Clear Screen’ приравнивается (0, 0, 0), что значит черный.

Обратите внимание, что решетка видима только в самом редакторе
Quest3D но не в созданных программах. Эта решетка является
вспомогательным элементом Quest3D.

Изображение ниже показывает результат канала ‘My Value’ со значением 0.5. Фон окрашен темно красным.

Пользовательский ввод (User input)

Изображение ниже отображает информацию для канала с названием ‘My Spacebar Value’.

Этот канал также имеет Базовый Тип Value. Тем не менее, его Тип User Input. Канал User Input может конвертировать множество различных типов активности пользователя, таких, как клавиатурный, с помощью мыши или джойстика в значение.

Так как канал ‘My Spacebar Value’ имеет Базовый Тип Value, он также поддерживается в качестве потомка каналом Clear Screen.

На изображениях ниже и выше, канал ‘Clear Screen’ изменяет цвет с черного на красный, опираясь на пользовательский ввод. При нажатии пробела фоновый цвет меняется на ярко-красный.

Квадраты множественных связей (Multi-link squares)

Изображение ниже показывает четыре различных канала: два Channel Callers, Value и Clear Screen.

Различные каналы могут иметь разное количество и Типы квадратов связи. Например, канал Clear Screen поддерживает три потомка, а канал Value поддерживает одного.

Символ ‘+’ внутри желтого квадрата связи отображает, что к каналу может быть привязано множество потомков. После того, как к каналу привязан потомок, символ ‘+’ переместится вправо, создавая новую ячейку для другого потомка.

Связывание (Linking)

Наведение мыши на верхний квадрат связи канала ‘Channnel caller’ делает его оранжевым.

На изображении ниже начато связывание от канала ‘Channel Caller’ к другому каналу, с помощью нажатия и удерживания левой клавиши мыши.

Во время связывания все квадраты связи изменяют цвет на красный или зеленый. Связи могут быть выполнены с зелеными квадратами связи, но не с красными.

На изображении выше, связь начата от канала Типа Channel Caller (он также имеет название ‘Channel Caller’). Канал ‘Project start’ (также Типа Channel Caller) поддерживает эту связь, как может быть видно по зеленому квадрату связи.

Каналы Типов Clear Screen и Value поддерживают только Values. Поэтому их квадраты связи красные.

Отпустив левую клавишу мыши на квадрате связи, вы создадите связь, если связь поддерживается.

Вместо нацеливания связи на целевой квадрат связи, вы можете
также отпустить ее на самом канале.
Quest3D попытается связать канал с одним из доступных квадратов
связи целевого канала.

Быстрое связывание:
1. Выделите потомка.
2. Нажмите клавишу ‘L’ на клавиатуре.
3. Нажмите на родителя.

Удаление связей (Deleting links)

Наведение мыши на стрелку связи между каналами и нажатие левой клавиши мыши приводит к выделению связи. Теперь вы можете удалить связь нажатием клавиши ‘Delete’ на вашей клавиатуре.

Если связь удалена из канала, создавшего новые ‘квадраты связи’, ‘пустые’ квадраты связи останутся. Этот квадрат связи имеет синий цвет. Каналы будут игнорировать эти пустые места. Если вы привяжете канал потомка к синему ‘квадрату связи’, ‘пустая’ позиция будет заполнена первой.

Окно Настроек Канала (Channel Properties window)

Двойное нажатие на канал откроет окно Channel Properties, специфическое для этого канала. Изображение ниже показывает настройки или окно диалога, принадлежащее каналу Value.

В этом окне настроек вы можете ввести новое значение. Обратите внимание, что программа Quest3D не делает паузы на открытие диалога. Вы можете изменять значения во время запуска вашей программы и сразу же наблюдать за результатом.

Контекстное Меню (Context Menu)

Нажатие правой клавиши мыши на канале вызывает Контекстное Меню.

Имя канала может быть изменено с помощью команды ‘General Properties’ (’Основные Настройки’). Выбор опции ‘Channel Properties’ вызывает то же окно, что и двойное нажатие мыши на канале.

Ярлыки (Shortcuts)

Ярлыки каналов работают так же, как и ярлыки к программам или папкам в Windows. В Quest3D могут быть созданы только ярлыки к каналам, не к папкам.

Ярлыки каналов могут быть созданы с помощью Контекстного Меню канала. Ярлыки также могут быть созданы с помощью нажатия правой кнопки мыши на ‘стрелке’ связи между двумя каналами. Появится меню с одной опцией.

Изображение снизу показывает результат операции.

Ярлыки являются ссылками на оригинальный канал. Их целью является придание Групп Каналов (Channel Groups) более высокой удобочитаемости.

Используйте папки и ярлыки, чтобы ваш проект сохранял чистоту и
аккуратность.

Урок

Следующее упражнение описывает настройки каналов. После его завершения вы должны будете понять Типы (Types) и Базовые Типы (Basetypes) каналов и квадратов связи.

Шаг за шагом:

  • Запустите Quest3D. По умолчанию, Quest3D открывается в секции Channels.
  • Перетяните следующий канал из списка Template List в Граф Каналов (Channel Graph).

System \ Clear Screen

Как вы можете видеть, канал Clear Screen уже укомплектован тремя потомками Value. Для практики этого урока мы удалим их. Растяните прямоугольник выделения вокруг трех каналов Value, нажмите клавишу Delete и ответьте Yes на вопрос уведомления.

  • Добавьте следующий канал.

Variables \ Value \ Value

  • Наведите указатель мыши на канал ‘Value’ и подождите, пока не появится всплывающее окно с информацией.

  • Наведите указатель мыши на маленький черный квадрат на вершине канала ‘Value’. Обратите внимание на то, что квадрат стал оранжевым.
  • Нажмите и удержите левую клавишу мыши и переместите мышь на центр канала ‘Clear Screen’. Пока не отпускайте кнопку мыши. Обратите внимание на черную линию, протянувшуюся от вершины канала ‘Value’ к текущей позиции курсора мыши.
  • Отпустите левую клавишу мыши. Обратите внимание на черную линию, соединившую вершину канала ‘Value’ с нижней частью канала ‘Clear Screen’. Два канала теперь соединены.

  • Наведите указатель мыши на канал ‘Clear Screen’ и кликните правой кнопкой для открытия его Контекстного Меню (Context Menu). Выберите опцию ‘Set as start channel’ (’Задать канал, как стартовый’).

Изображение справа показывает большой символ стрелки над вершиной канала ‘Clear Screen’. Он показывает, что канал является стартовым.

  • Убедитесь, что окно Animation 3D View отображается, нажав на закладку ‘Animation 3D View’ в нижнем левом углу экрана.
  • Дважды кликните на канал ‘Value’ для открытия окна его настроек.

  • Введите в боксе редактирования новое значение от 0 до 1.0. Обратите внимание, что изменение значения в диалоговом окне изменяет цвет в окне Animation 3D View.
  • Нажмите кнопку ‘OK’, чтобы согласиться и закрыть окно диалога.
  • Из Меню Приложения, выберите опцию ‘File’ и затем опцию ‘Save Group As…’ (’Сохранить Группу Как…’).

  • Найдите подходящее место для хранения ваших файлов проекта, например следующую директорию:

C:\Program Files\Act-3D\Quest3D 3.x\Projects\

  • Введите имя, например, ‘Introduction to channels’.

  • Нажмите кнопку ‘Save’ для сохранения.

Пример того, какой должна быть ваша программа, доступен в папке программы Quest3D. Его директория и имя приведены ниже. Как упоминалось в Разделе 1.2, ‘Как пользоваться этой книгой, ‘..\’ – аббревиатура следующей папки:

C:\Program Files\Act-3D\Quest3D 3.x\

  • Для загрузки проекта Quest3D, из Меню Приложения выберите опцию ‘File’ и затем опцию ‘Open Project...’.
  • Войдите в директорию ‘Законченной сцены’. Полный путь:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\1.6 –Channels\

  • Откройте файл ‘Channels – Complete.cgr’.
  • Проанализируйте законченную сцену, если вы поняли этот урок.

Законченная сцена:

  • ..\Tutorials\1.6 –Channels\Channels – Complete.cgr

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.7: Program flow - Quest3D

Tutorials/Manual/Chapter 1.7: Program flow

< Уроки | Руководство(Открыто по ссылке Раздел 1.7: Программный поток)
Jump to: navigation, search

Содержание

  • 1 1.7 Программный поток
    • 1.1 Активность проекта
    • 1.2 Кадры
    • 1.3 Программный поток
    • 1.4 Урок
    • 1.5 Законченная сцена

1.7 Программный поток

Программа Quest3D начинается с канала Start Channel. Start Channel помечен большим указателем со стрелкой, указывающей вниз.

Опция ‘Set as start channel’ (’Назначить канал как стартовый’) в Контекстном Меню канала может быть использована для определения начала программы в Quest3D.

На изображении ниже, канал ‘Channel Caller’ является Стартовым Каналом (Start Channel) и имеет двух привязанных потомков.

Channel Caller - основа рабочего процесса вашего проекта.

Активность проекта

Проект Quest3D запускается активно только когда открыто окно Animation 3D View.

На изображении выше Стартовый Канал запущен активно, мы видим это по голубому контуру вокруг канала.

Изображение ниже отображает маленькую сцену Quest3D. В левой части видна структура каналов. В правой части виден обзор сцены в окне Animation 3D View (3D Вид Анимации).

Кадры (Frames)

Quest3D работает в реальном времени. Это значит, что он постоянно запускает проект полностью и обновляет обзорный вид. Один полный цикл структуры каналов называется кадром (frame). Обработка всех конечных результатов называется визуализацией (rendering).

Частота кадров (framerate) определяет, сколько раз в секунду запускается программа. Частота кадров зависит от сложности проекта и аппаратных средств компьютера, используемых для визуализации сцены.

Программный поток (Program flow)

Вызов канала в Quest3D означает одинарный вызов всей функциональности канала, опирающийся на любой ввод, полученный от его потомков. Точные результаты вызова канала зависят от его Типа (Type).

Канал Channel Caller вызывает своих потомков в порядке слева направо. На изображении ниже, сначала вызывается канал ‘Caller 1’, отображая кубический объект (box) на экране. Далее вызывается канал ‘Caller 2’, визуализируя объект огня.

На изображении ниже мы видим поток Группы Каналов (Channel Group).

1. Начало каждого кадра.

2. Каналы Channel Caller работают слева направо, поэтому Стартовый Канал сначала вызывает первым канал, названный ‘Caller 1’.

3. Канал ‘Caller 1’ вызывает иерархию под ней. Эта иерархия запускается с канала типа ‘3D Object’, названного ‘Box Object’. Этот канал отображает на экране куб, видимый на изображении выше, с правой стороны.

4. После запуска иерархии в левой части, Стартовый Канал продолжает работу со вторым потомком, ‘Caller 2’.

5. Канал ‘Caller 2’ вызывает своего потомка ‘Fire Object’. Этот канал и его потомок создают объект огня, видимый на изображении выше.

Когда структура полностью запущена, программа начинается сначала со Стартового Канала.

Урок

Следующее упражнение иллюстрирует поток программы Quest3D.

Необходима сцена Quest3D:

  • ..\Tutorials\1.7 – Program flow\Program flow.cgr

Шаг за шагом:

  • Запустите Quest3D.
  • Откройте сцену ‘Program flow.cgr’. Ее можно найти по пути, описанному выше. Файл содержит простую сцену с объектами куба и огня.
  • Убедитесь, что окно Animation 3D View активно с помощью нажатия соответствующей закладки в нижнем левом углу экрана.
  • Изучите сцену в окне Animation 3D View. Обратите внимание на то, что оба объекта, и куб, и пламя визуализируются.
  • Нажмите на канал ‘Caller 1’ правой клавишей мыши и из его Контекстного Меню выберите опцию ‘Set as start channel’ (‘Установить канал, как стартовый‘).
  • Изучите сцену в окне Animation 3D View. Обратите внимание на то, что теперь визуализируется только объект пламени.
  • Нажмите правой кнопкой на канал ‘Caller 2’ и из его Контекстного Меню выберите опцию ‘Set as start channel’.
  • Изучите сцену в окне Animation 3D View. Обратите внимание на то, что теперь визуализируется только кубический объект.

Законченная сцена:

  • ..\Tutorials\1.7 – Program flow\Program flow – Complete.cgr

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.8: Templates - Quest3D

Tutorials/Manual/Chapter 1.8: Templates

< Уроки | Руководство(Открыто по ссылке Раздел 1.8: Шаблоны)
Jump to: navigation, search

1.8 Шаблоны (Templates)

Шаблон – предварительно подготовленный канал или группа каналов, разработанных для ускорения рабочего потока.

Шаблоны (templates) могут быть использованы в сцене незамедлительно. Преимущество работы с шаблонами заключается в том, что вы не обязаны понимать каждый из компонентов. Позже, когда вы более ознакомитесь с Quest3D, вы сможете сделать более опытный взгляд на шаблоны. Вы также сможете создавать свои собственные.

Ниже изложен список категорий шаблонов, сопровождающих Quest3D. Он приведен для того, чтобы дать вам представление о полном наборе. Остальная часть данного руководства обсуждает многие из этих шаблонов и их функциональность в более подробных деталях.

Категория | Описание | Примеры шаблонов
Scene | Настройка 3D сцены | Render Camera Light
Objects | 3D объекты, поверхности и специальные эффекты | Primitive Object Texture Particle System Pixel Shader Vertex Shader
Logic | Условия и триггеры в программе | Channel Caller If Trigger Channel Switch User Input Finite State Machine Motionplanning
Variables | Хранители данных и операторы | Value Vector Matrix Text Expression Value
Animation | Таймеры, анимация персонажей и регулярная | Timer Value Timer Command Motionset
Sound | Звук и музыка | Wav File Mp3 File Sound Command
Physics | Имитация физики (основывается на Open Dynamics Engine) | ODE Body ODE Joint ODE Command
System | Системная информация и команды Динамическая загрузка частей программы Всплывающие окна Просмотрщики проектов | System Info System Command Save Channel to Buffer Array Buffer Remove Group Message Box File Dialog Open URL ActiveX Event WinAmp Waveform
Power Edition | Соединение множества компьютеров Подключение к базе данных HDR Частицы | Network Value Network Text Network Actions DB Source DB Query DB Value
VR | Поддержка Виртуальной Реальности | Glove Force Feedback Serial Socket Stereo Render

Перевел Ovod, 2008

Назад


Chapter 2.2: Animation - Quest3D

Chapter 2.2: Animation

Содержание

  • 1 2.2 Анимация
    • 1.1 Графики
    • 1.2 Таймеры
    • 1.3 Вывод Раздела Анимации
    • 1.4 Другие типы анимации
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

2.2 Анимация

Одна из наиболее мощных возможностей Quest3D заключается в том, что вы можете анимировать практически любой аспект вашей сцены. Например, 3D объекты могут быть перемещаемы, вращаемы или отмасштабированы в течение времени. Вдобавок, все их настройки поверхности могут быть анимированы, например, значения цвета или прозрачности. Модели 3D персонажей могут быть оживлены с помощью анимации виртуальных скелетов внутри них. Музыка и звук могут быть запущены в зависимости от местонахождения, или течения времени. Окна меню могут быть перемещены за пределы экрана и затухать.

Графики (Envelopes)

В Quest3D, анимация обычно означает изменение значений в течение времени. Обычный канал Value может хранить только одно значение. Для хранения данных анимации используется канал Envelope.

Интерфейс канала Envelope выглядит как математический график. Работает он в той же манере. Горизонтальная ось представляет вход (обычно время), который может быть введен в Envelope с помощью подключения канала (Timer) Value к его дочернему входу. Вертикальная ось представляет выход. С помощью пар (X, Y) и интерполяции, любое входное значение может быть переведено в выходное.

Таймеры (Timers)

Каналы Timer Value и Timer Command позволяют с легкостью управлять анимацией. Примеры Timer Command - ‘Play’, ‘Stop’, ‘Rewind’ и ‘Play & Loop’. На изображении ниже, канал Timer Value привязан ко входу канала Envelope. Timer может быть воспроизведен с помощью канала Timer Command, показанного на том же изображении.

Timer может быть назван в окне настроек его канала. Вы можете создать так много таймеров в сцене, сколько вам нужно.

Каналы Timer Value автоматически настраиваются под скорость компьютера. В Quest3D, 25 кадров эквивалентно ровно 1 секунде.

Раздел Анимации (Animation Section) в Quest3D – место, где располагаются и анимируются все объекты.

Вывод Раздела Анимации (Animation Section):

1 | Меню приложения | Содержит стандартные функции, такие, как управление файлами, конфигурация и справка.
2 | Панель инструментов | Иконки для управления файлами, вид графа каналов и вид камеры.
3 | Кнопки выбора разделов | Кнопки для быстрого перехода между Разделами.
4 | Кнопки Run / Run/Edit / Edit | Управляют способом обработки ввода пользователя.
5 | Закладка ‘Object’ | Отображает список всех объектов.
6 | Закладка ‘Camera’ | Отображает список и настройки всех камер.
7 | Закладка ‘Light’ | Отображает список и настройки всех источников освещения.
8 | Панель фильтрации поиска | Фильтрует объекты в списке.
9 | Список Объектов | Список всех объектов проекта.
10 | Кнопки контроля над перемещением | Перемещение, вращение и масштабирование объекта.
11 | Поля ввода значений трансформации | Поля значений для позиции, ориентации и размера.
12 | Панель конфигурации | Элементы управления, такие, как мировое масштабирование.
13 | Окно Вида 3D Анимации | Отображает 3D сцену.
14 | Панель Слайдера Времени | Создание ключей и воспроизведение анимации в пределах Таймера.
15 | Панель отчета | Отладка и сообщения об ошибках.

Панель Слайдера Времени (Time Slider Bar) позволяет вам вставлять анимационные ключи и воспроизводить анимацию.

1 | Начальный кадр
2 | Текущий кадр
3 | Конечный кадр
4 | Список таймеров
5 | Предыдущий ключ
6 | Запись
7 | Воспроизведение (и цикл)
8 | Следующий ключ
9 | Кнопка удаления ключа
10 | Кнопка вставки ключа
11 | Управление графиком

Другие типы анимации

Любой канал базового типа Value может быть использован, как входное значение для анимации. Примером может быть эффект подсветки при наложении указателя мыши на объект, длина статусной линейки, в зависимости от сложного просчета и даже поведение искусственного интеллекта персонажей, отталкиваясь от их взаимодействия.

Урок

Этот урок описывает анимацию в Quest3D, основанную на времени. После его завершения вы должны получить понимание Графиков (Envelopes), Таймеров (Timers) и Команд Времени (Timer Commands).

Необходимая сцена Quest3D:

  • ..\Tutorials\2.2 – Animation\Animation.cgr

Необходимые шаблоны:

  • Animation \ Timer Value (x2)
  • Animation \ Timer Commands \ Play & Loop
  • Animation \ Timer Commands \ Stop

Шаг за шагом:

  • Откройте сцену ‘Animation.cgr’. Она содержит простую сцену и две сферы.
  • Перетяните канал Timer Value в Граф Каналов (Channel Graph). Подсоедините его к каналу ‘Red Sphere Timer Value’.
  • Перейдите в Раздел Анимации (Animation Section), нажав на кнопку.
  • Нажмите на кнопку Play. Обратите внимание, что красная сфера теперь перемещается. Анимация зациклена. Нажмите кнопку Stop. Обратите внимание, что анимация замерла в текущем кадре.
  • Перейдите в Раздел Каналов (Channels Section).
  • Перетяните еще один канал Timer Value в Граф Каналов (Channel Graph). Подсоедините его ко всем 9 каналам Envelope перемещения (motion) объекта ‘Blue Sphere’.

  • Дважды щелкните на канале Timer Value, чтобы открыть окно настроек. Из выпадающего списка выберите ‘New..’. Во всплывающем окне введите имя ‘Blue Sphere’ и нажмите OK.
  • Перейдите в Раздел Анимации (Animation Section).
  • Нажмите на объект ‘Blue Sphere’ в списке в левой части экрана, чтобы выбрать его.
  • Панель Слайдера Времени (Time Slider Bar) на данный момент отображает стандартный таймер ‘Default’. Из списка таймеров Timer List, выберите ‘Blue Sphere’.
  • Нажмите кнопку Play. Обратите внимание, что синяя сфера теперь перемещается, а красная – напротив, не движется (так как она анимирована с помощью другого таймера, в данном случае, ‘Default’).
  • Нажмите кнопку Stop.
  • В боксе ‘End Frame’, смените значение на ‘250’. Обратите внимание на то, что панель слайдера времени растянулась, чтобы отобразить все кадры от ‘0’ до ‘250’.
  • Перетяните слайдер времени на ‘150’, и нажмите кнопку ‘Insert keyframe’ . Подтвердите всплывающее окно, нажав ‘OK’. Обратите внимание, что ключ анимации был добавлен на Панель.
  • Переместите синюю сферу, изменив одно или более координатных значений в символьных полях Transform. Они находятся в нижнем левом углу экрана, под кнопкой ‘Move’.

  • Убедитесь, что Gizmo включен, нажав кнопку в левом нижнем углу экрана.
  • Переместите синюю сферу, потянув за одну из осей Gizmo.

  • Переместите слайдер времени на кадр ‘0’ и нажмите кнопку ‘Insert keyframe’. Во всплывающем окне введите ‘250’, подтвердите, нажав ‘OK’. Текущее расположение объекта (позиция, ориентация, масштаб) в кадре ‘0’ скопированы в кадр ‘250’. Теперь анимация зациклена правильно.
  • Нажмите ‘Play’, чтобы проверить новую, более длинную анимацию, созданную вами. Когда закончите, нажмите ‘Stop’.
  • При необходимости внесите коррективы, которые считаете нужным.
  • Перейдите в Раздел Каналов (Channels Section).
  • Найдите канал ‘Env X’ channel, который является частью вектора позиции объекта ‘Blue Sphere’. Дважды щелкните на канал ‘Env X’, чтобы открыть окно настроек.
  • Нажмите на один из ключей анимации, чтобы выбрать его, и перетяните его вверх или вниз, чтобы изменить его значение.
  • Перетяните ключи анимации влево и вправо с помощью правой клавиши мыши. Это изменит позицию ключей по горизонтальной оси (время).
  • В боксе ‘Vert. Value (out)’ введите значение для экстренной точности.
  • Нажмите ‘OK’, чтобы подтвердить ваши изменения и закройте окно редактора графика Envelope.
  • Перейдите в Раздел Анимации (Animation Section).
  • Нажмите ‘Play’, чтобы проследить изменения в анимации. Когда будете готовы, нажмите ‘Stop’.
  • Перейдите в Раздел Каналов (Channels Section).
  • Перетащите шаблон Play & Loop в Граф Каналов (Channel Graph). Подсоедините его к каналу ‘Play Animation’..
  • Дважды щелкните по каналу ‘Play & Loop’, чтобы открыть окно его свойств. Выберите ‘Blue Sphere’ и нажмите ‘OK’ для подтверждения.
  • Перетяните шаблон Stop в Граф Каналов (Channel Graph). Присоедините его к каналу ‘Stop Animation’.
  • Дважды щелкните по каналу ‘Stop’, чтобы открыть окно его свойств. Выберите ‘Blue Sphere’ и нажмите ‘OK’.

  • Перейдите в Раздел Анимации (Animation Section).
  • Переключитесь в Режим Запуска (Run Mode), нажав на кнопку.
  • Нажмите пробел. Анимация начнет проигрываться и будет цикличной.
  • Нажмите клавишу escape. Анимация будет остановлена.

Законченная сцена:

  • ..\Tutorials\2.2 – Animation\Animation – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.3: Object import - Quest3D

Chapter 2.3: Object import

Содержание

  • 1 2.3 Импорт объекта
    • 1.1 .X файлы
  • 2 Урок
    • 2.1 Подготовка
    • 2.2 Необходимый ‘.X’ файл
    • 2.3 Необходимые шаблоны
    • 2.4 Шаг за шагом
    • 2.5 Законченная сцена

2.3 Импорт объекта

Quest3D укомплектован рядом готовых к использованию 3D объектов. Тем не менее, рано или поздно вы захотите использовать ваши собственные модели. Различные компании и вебсайты мира предоставляют завершенные 3D объекты, бесплатно или коммерчески. Также вы можете создавать ваши собственные модели с помощью таких пакетов, как 3d Studio Max, Maya и Lightwave.

.X файлы

Перед тем, как вы сможете использовать ваши собственные модели в Quest3D, вам понадобится сконвертировать их в файловый формат Microsoft DirectX, ‘.X’. Файлы ‘.X’ содержат решеточный каркас, поверхность, текстурные привязки и анимационные данные об объекте, и могут напрямую быть импортированы в Quest3D.

Плагины экспорта в формат ‘.X’ для ряда пакетов
моделирования сопровождают упаковку Quest3D. Для
их установки необходимого, из меню Пуск выберите
Все Программы > Act-3D > Quest 3D 3.0 > Extras >
> Exporters > далее, по имени программы и версии,
которую вы используете. Убедитесь, что установили
утилиту в правильную дирекорию плагинов пакета
моделирования.

Приложение A1 детально описывает подготовку 3D объектов и экспорт из 3d Studio Max и Maya. В качестве дополнения описан импорт и экспорт с помощью Polytrans.

Урок

В следующем уроке, простой объект, созданный в одном из пакетов моделирования, упомянутых выше, будет экспортирован в файловый формат ‘.X’. Затем будет осуществлен импорт в Quest3D.

Подготовка:

  • В вашем любимом пакете моделирования создайте простой объект, например, куб. При необходимости обратитесь к справочным материалам программы за более подробной информацией.
  • Из меню приложения выберите ‘File > Export’.
  • Выберите место на вашем жестком диске, куда будет сохранен файл ‘.X’.
  • Введите имя и нажмите ‘Save’.
  • Стандартные настройки устроят нас на данный момент.

Выберите ‘Go!’.

Папка ‘..\Resources\3D Models\’ на вашем жестком
диске содержит ряд объектов в формате ‘.X’. Вы
можете также использовать одну из этих моделей
для прохождения данного урока.

Необходимый ‘.X’ файл:

  • ..\Resources\3D Models\Cars\Car.X

Необходимые шаблоны:

  • Scene \ Simple Scene
  • Scene \ Cameras \ Object Inspection Camera

Шаг за шагом:

  • В Quest3D, из меню программы выберите ‘File > Import’.
  • Укажите файл ‘.X’, который вы только что создали, или файл ‘Car.X’ из папки, указанной выше. Нажмите ‘Open’ для подтверждения.
  • Далее окно свойств потребует ввести внутреннее имя канала. Смените его на ‘Car’ и нажмите ‘OK’ для подтверждения.
  • Стандартные настройки в следующем окне свойств на данный момент нам подходят.

Нажмите ‘OK’ для подтверждения.

  • Обратите внимание, что 3D модель из ‘.X’ файла была импортирована в Quest3D. Она хранится в стандартной структуре канала 3D Object.
  • Если вы используете файл car.x и установлена галка на выборе файла при отсутствии текстуры (Use file select for unfound textures), вас уведомят о том, что необходимо загрузить отсутствующие текстуры. Они могут быть найдены в папке ..\Resources\Textures\Cars.
  • Перетяните шаблон Simple Scene в ваш Граф Каналов (Channel Graph), выше каналов объекта.
  • Выделите и удалите канал ‘3D Text Object’ и объект ‘Square’, а также их потомков.
  • Нажмите правой клавишей мыши на канале ‘Start 3D Scene’ и выберите ‘Set as start channel’ (Задать, как стартовый канал).
  • Убедитесь, что обзорный вид анимации Animation 3D View отображает сцену с помощью камеры проекта (Project Camera).
  • Привяжите только что импортированный вами 3D объект к каналу ‘Render’. Теперь он должен появиться в окне Animation 3D View.
  • Выберите папку ‘Basic Camera’, присоединенную к каналу ‘Render’.
  • Перетяните ‘Object Inspection Camera’ и присоедините его к каналу Render.
  • Перейдите в Объектный Раздел (Object Section).
  • Произведите необходимые изменения для поверхности модели. Напимер, в значениях ‘Emissive’ и ‘Specular’, а также настройки прозрачности (transparency).
  • Перейдите в Раздел Анимации (Animation Section).
  • Убедитесь, что обзорный вид анимации Animation 3D View отображает сцену с помощью камеры проекта.
  • Переключитесь в Режим Воспроизведения (Run Mode), нажав на кнопку.
  • Зажмите правую клавишу мыши и поводите мышью вокруг. Обзорный вид будет вращаться вокруг объекта.
  • Если хотите, можете сохранить текущую сцену в папку на жестком диске.

Законченная сцена:

  • ..\Tutorials\2.3 – Object import\Object import – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.4: Surface properties - Quest3D

Chapter 2.4: Surface properties

Содержание

  • 1 2.4 Свойства поверхности
    • 1.1 Текстуры
    • 1.2 Сжатие
    • 1.3 Мипмеппинг
    • 1.4 Файловый формат .dds
    • 1.5 UV Меппинг
    • 1.6 Прозрачность
    • 1.7 Текстурные стадии
    • 1.8 Наборы UV
    • 1.9 Объектная сортировка
    • 1.10 Альфа артифакты
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые текстуры
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

2.4 Свойства поверхности

Большая часть внешнего вида 3D объектов сцены определяется свойствами их поверхностей. Этот раздел приоткроет завесу над текстурными картами, текстурированием, методами сглаживания и прозрачностью.

Текстуры (Textures)

Текстура - это изоображение, которое может быть натянуто на 3D форму. В графике реального времени, по причинам соблюдения быстродействия, их размеры в пикселях (ширина и высота) должны быть кратны степени 2. В Quest3D, они также должны быть больше 8. Размеры 32x32, 128x256 и 256x256 пикселей являются правильными.

Большие размеры означают увеличение размеров файлов, а также повышение потребления памяти. Даже несмотря на то, что современная графическая аппаратура может иметь 64, 128 или даже 256 Mб текстурной памяти, неразумное использование тестур может вызвать проблемы. В то время, как ‘.jpg’ изображение с размерами 2048x2048 пикселей занимает всего около 40 кб дискового пространства, оно занимает около 8 Mб текстурной памяти.

Рекомендуется придерживаться размеров текстуры настолько малых, насколько это возможно, без потери деталей. Хорошим правилом можно считать использование размеров текстуры не более, чем она будет видимой на экране. Например, для зданий, расположенных на расстоянии, 128x128 пикселей может быть достаточно. Плоскости травы вряд ли должны быть больше 32x32.

Сжатие (Compression)

В дополнение, текстуры в Quest3D могут быть сжаты. Качество изображения может быть немного снижено, но сжатые текстуры могут потерблять в четыре раза меньше памяти по сравнению с несжатыми версиями. Создание 3D сцены постоянно балансирует межды качеством и производительностью.

Мипмеппинг (Mipmaps)

Большие текстуры на удаленных поверхностях могут создавать артефакты.

Используя различные версии изображения, уменьшая его размер, эти искажения могут быть побеждены. Эти меньшие версии текстуры называются ‘mipmaps’ и могут быть созданы Quest3D автоматически.

Использование мипмеппинга на плоскости изображения снизу привело к следующим результатам.

Обратите внимание на то, что меньшие версии также меньше потребляют текстурной памяти. Также, при загрузке сцены Quest3D, мипмеп карты должны быть сгенерированы при запуске. Это может занять некоторое время, в зависимости от количества текстур в проекте, их разрешения и количества мипмеп карт, заданное для каждой текстуры.

Файловый формат .dds

Формат изображений ‘.dds’ может хранить информацию о мипмеп картах. Размер файла увеличивается, но время загрузки в Quest3D уменьшается, так как не нужно генерировать мипмеп при запуске.

‘.dds’ плагин для Photoshop сопровождает Quest3D.
Чтобы установить его, из меню Пуск выберите
Все Программы > Act-3D > Quest 3D 3.0 > Extras >
> Exporters > Photoshop > DDS file.
Убедитесь, что устанавливаете утилиту в подкаталог
‘Plug-Ins’ папки Photoshop на вашем жестком диске.

UV Меппинг (UV Mapping)

Текстуры накладываются на 3D объекты согласно так называемым наборам UV координат ‘UV coordinate sets’. UV координаты определяют, где на поверхности модели должен прорисоваться каждый пиксель.

Quest3D может управлять простыми методами ‘UV меппинга’, такими, как планарный (planar) и кубический (cubic), показанными ниже. Эти простые типы UV меппинга могут быть перемещаемы и масштабируемы.

UV координаты располагаются в диапазоне от 0 до 1.0. (0, 0) - это верхний левый угол изображения, в то время как (1.0, 1.0) - нижний правый угол.

Так как UV координаты относительны, как только на объект правильно наложена UV карта, текстуры любых размеров могут быть применены к объекту.

Натягивание текстуры на 3D объект обычно требует высокого контроля и точности. На практике, UV меппинг означает расположение каждой вершины 3D объекта на 2D изображении.

Сложный UV меппинг должен быть выполнен в вашем рабочем пакете 3D моделирования. Пожалуйста, обратитесь к руководству вашего пакета моделирования для дополнительной информации по UV меппингу. Ключевые слова: ‘uv’, ‘unwrap’, ‘texture’, ‘mapping’.

Продвинутая форма UV меппинга в Quest3D - это метод карты отражения ‘Reflection map’. Он проецирует текстуру на поверхность, отталкиваясь от текущего расположения камеры. Иозбражение ниже показывает объект с картой отражений, расположенный под разными углами, а также саму текстуру отражения.

Прозрачность (Transparency)

Прозрачность поверхности пожмет быть достигнута различными способами. В Объектной Секции, в закладке поверхностей ‘Surface’, выпадающий список прозрачности ‘Transparency’ предоставляет ряд опций.

Верхний ряд на изображении ниже показывает следующие методы прозрачности, по порядку: ‘No Transparency’ (Нет прозрачности), ‘Multiply’ (Умножение) и ‘Add’ (Добавление). Нижний ряд показывает ‘Add Smooth’ (Сглаженное Добавление), ‘Alpha Value’ (Значение Альфа) и ‘Alpha Texture’ (Текстура Альфа).

‘Multiply’ (Умножение) может быть использован для темных окон или теней, к примеру. ‘Add’ (Добавление) создает эффект свечения. ‘Add Smooth’ (Сглаженное Добавление) - более легкая версия. ‘Alpha Value’ (Значение Альфа) делает поверхность прозрачной от 0% до 100%. ‘Alpha Texture’ (Текстура Альфа) используется для точного задания прозрачности.

Текстурные стадии (Texture stages)

Поверхности может быть назначено более одной текстуры. Максимальное количество текстурных стадий (‘texture stages’), которые могут быть применены к поверхности, зависит от графической карты. Большинство графических карт поддерживает две стадии, но новые карты поддерживают три или четыре. Глава 10, ‘Ландшафты’, обсуждает продвинутые методы смешивания, операясь на множественные проходы визуализации.

Различные стадии текстуры могут быть смешаны друг с другом рядом способов. В Объектном Разделе, в закладке ‘Surface’, выпадающий список смешивания текстур ‘Texture Blending’ предоставляет ряд опций. Они подобны опциям в выпадающем списке прозрачности ‘Transparency’, обсуждаемом выше.

Ряд на изображении ниже показывает три исходных текстуры: стадия 1, стадия 2 и альфа карта. Нижний ряд показывает следующие типы смешивания, по порядку: ‘Multiply’ (Умножение), ‘Add’ (Добавление), ‘Alpha Value’ (50%) (Значение Альфа) и ‘Alpha Texture’ (Текстура Альфа).

Настройка ‘Multiply’ (Умножение), обычно приводит к темным цветам. ‘Add’ (Добавление) приводит к более светлым цветам. ‘Alpha Value’ (Значение Альфа) смешивает две стадии от 0 до 1 (от 0% до 100%). ‘Alpha Texture’ (Текстура Альфа) используется для точного определения сглаживания.

Наборы UV (UV sets)

Поверхность может иметь более одного набора UV координат. Максимальное количество наборов UV зависит от графической карты. Большинство карт поддерживает до двух наборов. Смешивание текстурных стадий с отдельными UV координатами может быть выполнено для маскировки повторений. В дополнение, такие эффекты, как световые карты нуждаются в отдельных наборах.

Изображение ниже показывает две текстурных стадии, каждая со своей собственной uv картой. Результат смешивания показан справа.

Сортировка объектов (Object sorting)

При визуализации сцены, Quest3D автоматически сортирует все поверхности для их отображения в правильном порядке. Иногда, особенно при работе с прозрачными объектами, поверхности могут сортироваться неправильно. В этом случае, часть поверхности или вся поверхность визуализируются позади или через другую поверхность, в то время, как должна распологаться перед.

Для избежания возникающих мерцания и наложения, в целом, прозрачные поверхности должны визуализироваться после непрозрачных. Другими словами, необходимо активировать счетчик сортировки поверхностей по ‘Z Bias’ (смещение по оси Z). Эта настройка может быть изменена в Объектной Секции, в закладке ‘Surface’, в продвинутом режиме ‘Advanced..’. Когда порядок визуализации поверхностей будет нечистым, поверхности с более высоким значением смещения по оси Z (Z Bias) будут визуализироваться поверх остальных.

Поверхности с изображения выше теперь отрендерены в правильном порядке, как показано на следующей картинке.

Альфа артифакты (Alpha artifacts)

Альфа текстуры, используемые для прозрачности иногда могут вызывать нежелаемые результаты.

Пиксели, которые должны быть прозрачными, могут быть выдернуты настройкой ‘Reject Alpha Pixels’ (Отказ от альфа пикселей). Она может быть настроена в Объектном Разделе, в закладке ‘Surface’, в режиме ‘Advanced..’. Значение ‘Ref’ определяет порог для выброса нежелаемых пикселей.

Изображение ниже показывает оттекстурированную поверхность с правильной прозрачностью альфа.

Урок

Этот урок имеет дело с текстурами, прозрачностью, методами смешивания и сортировкой поверхностей. В конце данной главы вы должны научиться работать с текстурами в Quest3D.

Необходимая сцена Quest3D:

  • ..\Tutorials\2.4 – Surface properties\Surface properties.cgr

Необходимые текстуры:

  • ..\Resources\Textures\Architecture\Buildings_128.jpg
  • ..\Resources\Textures\Landscapes\Grass.jpg
  • ..\Resources\Textures\Reflection\Reflection_1.jpg

Шаг за шагом:

  • Откройте сцену ‘Surface properties.cgr’. Она содержит дорогу через сельскую местность, несколько зданий на заднем фоне, ряд деревьев и припаркованную машину.
  • Перейдите в Объектный Раздел (Object Section).
  • Нажмите на закладку анимации ‘Animation 3D View’, чтобы выбрать ее.
  • Убедитесь, что вид Animation 3D View отображает сцену с помощью камеры проекта (Project Camera).
  • С данной обзорной позиции изучите здания на заднем фоне. Обратите внимание, что они довольно малы по сравнению со всем остальным на экране.
  • Нажмите на объект ‘Buildings’ в списке, чтобы выбрать его.
  • В закладке ‘Textures’ в правой части экрана, найдите подсвеченную текстуру ‘Buildings_1024.jpg’. Дважды щелкните на нее, чтобы открыть окно свойств.
  • В окне настроек текстуры, обратите внимание, отображены ее размеры и потребляемая память.
  • Нажмите кнопку загрузки ‘Load’ и перейдите в папку ‘..\Resources\Textures\Buildings\’. Выберите файл ‘Buildings_128.jpg’ и нажмите ‘Open’. Новое изображение отобразится в окне предварительного просмотра. Обратите внимание на новые размеры и потребление памяти. Нажмите ‘OK’, чтобы закрыть окно текстуры.
  • Повторно изучите здания на заднем плане. Обратите внимание на то, что их текстуры все еще слишком остры. Снижение размеров текстуры в целях повышения производительности в данном случае не привело к понижению качества.
  • Переключитесь на камеру редактора (Editor Camera), нажав на ее иконку.
  • Посмотрите на ландшафт сверху. Обратите внимание на то, что зеленая поверхность нуждается в текстуре.
  • Нажмите на объект ‘Landscape’ в списке, чтобы выбрать его.
  • Нажмите на поверхность ‘Landscape’ в списке (surface), чтобы выделить ее.
  • В закладке ‘Textures’ в правой части экрана, нажмите кнопку ‘Load’, чтобы загрузить новую текстуру. Перейдите в папку ‘..\Resources\Textures\Landscapes\’.. Выберите файл ‘Grass.jpg” и нажмите ‘Open’. Нажмите ‘OK’, чтобы закрыть окно текстуры. Убедитесь, что ‘Texture Channelgroup’ выставлена на ‘Surface properties’.
  • Нажмите на новую текстуру, чтобы применить ее к поверхности травы объекта ‘Landscape’. Обратите внимание, что текстура растянулась по все поверхности ландшафта.
  • В закладке текстурных стадий ‘Textures Stages’ в левой части экрана, из выпадающего списка ‘Mapping’, выберите ‘Planar Y’. Обратите нимание, что теперь текстура спроецирована на поверхность по вертикальной оси.
  • Потяните кнопку масштабирования ‘Scale’, чтобы изменить повторность (tiling). Обратите внимание на то, как изменяется внешний вид поверхности.
  • Введите ‘20’ для значений ‘U’ и ‘V’ в боксах, рядом с кнопкой ‘Scale’, для точного задания повторности (tiling).
  • Нажмите на иконку для отображения сцены с помощью камеры проекта (Project Camera).

  • В закладке ‘Textures’ в правой части экрана, найдите подсвеченную текстуру ‘Grass.jpg’ и дважды щелкните по ней. В окне настроек, обратите внимание, значение количества мипмепа (MipMap Count) на данный момент ‘All’ (Все); при этой настройке Quest3D автоматически решает, как много уровней мипмепа необходимо. Смените настройку на ‘None’ (Отсутствие) и нажмите ‘Apply’, изучите разницу. Верните снова на all и нажмите кнопку ‘OK’ для закрытия окна текстуры.
  • Нажмите на иконку, чтобы отобразить сцену через камеру редактора (Editor Camera).
  • В списке объектов (Objects List) в нижнем правом углу экрана, нажмите на объект ‘Car’, чтобы выбрать его.
  • В списке поверхностей (Surfaces List), в нижней части экрана, нажмите на поверхность ‘Chassis’, чтобы выделить ее.
  • В закладке текстурных стадий ‘Texture Stages’ в правой части экрана, нажмите на закладку ‘Stage 2’.
  • В закладке ‘Textures’ в правой части экрана, нажмите кнопку ‘Load’ для загрузки новой текстуры. Перейдите в папку ‘..\Resources\Textures\Reflection\’. Выберите файл ‘Reflection.jpg” и нажмите ‘Open’. Нажмите ‘OK’ для закрытия окна текстуры.
  • Нажмите на новую текстуру, чтобы применить ее к поверхности ‘Chassis’ объекта ‘Sports Car’. Обратите внимание, что текстура растянулась по машине.
  • В закладке ‘Texture’, в левой части экрана, из выпадающего списка ‘Mapping’, выберите карту отражений ‘Reflection map (CamReflvec)’. Обратите внимание, как это повлияло на UV меппинг.
  • Облетите камерой редактора (Editor Camera) вокруг машины. Обратите внимание, как это влияет на UV меппинг.
  • В закладке ‘Surface’, из выпадающего списка смешивания текстур ‘Texture Blending’ выберите значение альфа ‘Alpha Value’.
  • В закладке настроек ‘Properties’, перетяните слайдер ‘Texture factor’ на ‘0.92’. Обратите внимание, что стадия отражения смешалась с диффузной текстурой под ней.
  • Облетите машину. Изучите эффект отражения. Если необходимо, подстройте слайдер ‘Texture Factor’ для изменения баланса смешивания.
  • Нажмите на поверхность ‘Windows’ (surface) в списке, чтобы выделить ее.
  • В закладке ‘Surface’, из выпадающего списка прозрачности ‘Transparency’, выберите ‘Multiply’ (Умножение). Обратите внимание, что окна машины стали прозрачными и более темными.
  • Из выпадающего списка прозрачности ‘Transparency’, выберите ‘Add’ (Добавить). Обратите внимание на то, как окна машины стали прозрачными и более светлыми, почти светящимися.
  • Из выпадающего списка прозрачности ‘Transparency’, выберите ‘Alpha Value’ (Значение Альфа). Обратите внимание на то, что окна машины стали полностью прозрачными.
  • В закладке настроек ‘Properties’, перетяните слайдер ‘Alpha’ на значение ‘0.5’. Обратите внимание на то, что окна машины стали прозрачными на 50%.

  • Изучите деревья в сцене. Обратите внимание на прямоугольные поверхности вокруг их листьев, которые должны быть прозрачными.
  • Нажмите на объект ‘Trees’ в списке, чтобы выделить его.
  • Нажмите на поверхность ‘Leaves’ в списке, чтобы выделить ее.
  • В закладке ‘Surface’, из выпадающего списка ‘Transparency’ выберите ‘Alpha Texture’. Обратите внимание, что прямоугольники вокруг листьев стали более прозрачными. Также обратите внимание, что все еще присутствует нежелаемый контур вокруг листьев.
  • В закладке ‘Surface’, нажмите на кнопку ‘Advanced..’.
  • Выберите ‘Reject Alpha Pixels’ и введите значение ‘150’ для ‘Ref’. Обратите внимание, что контур вокруг листьев исчез.

Законченная сцена:

  • ..\Tutorials\2.4 – Surface properties\Surface properties – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.5: Lighting and shadows - Quest3D

Chapter 2.5: Lighting and shadows

Содержание

  • 1 2.5 Освещение и тени
    • 1.1 Типы источников освещения
    • 1.2 Тени
    • 1.3 Тени в реальном времени
    • 1.4 Карты освещения
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

2.5 Освещение и тени (Lighting and shadows)

Правильное освещение важно для убедительной виртуальной сцены. Освещение и тени дают пользователю визуальные впечатления об окружении. Без контраста между светом и тенью намного сложнее добиться глубины в сцене.

В Quest3D доступен ряд техник освещения: обычное внешнее освещение, самосвечение, тени в реальном времени и карты освещения. Эта глава описывает эти техники в деталях.

Обычное внешнее освещение подразумевает источник света, излучающий свет на 3D объекты в сцене. В Quest3D, источники освещения являются каналами, обладающими рядом привязанных к ним потомков. Их свойства также могут быть доступны в разделе анимации Animation Section, в закладке ‘Light’.

Типы источников освещения (Light types)

Источники освещения в Quest3D могут быть трех типов: точечный (point), прожектор (spot) и направленный (directional), они показаны на изображении ниже.

Точечный источник освещения (point) излучает свет во всех направлениях. Прожектор (spotlight) определяется внутренним и внешним углами конуса, что приводит к эффекту рассеивания. Направленный источник (directional) - это просто вращаемый вектор, по которому источник излучает свет. Все лучи направленного источника света параллельны друг другу.

Свет в Quest3D может быть подкрашен с помощью его вектора ‘Diffuse’. Вектор окружения ‘Ambient’ служит в качестве глобального вектора эмисии ‘Emissive’, для всех объектов, попадающих во влияние источника освещения.

Изображение выше показывает примеры диффузного ‘Diffuse’ и окружающего ‘Ambient’ освещения.

Влияние источника освещения в сцене легче контролировать, если подключить канал Light к каналу Render. Только объекты, подключенные к этому каналу Render будут подвержены влиянию присоединенного источника освещения. Максимальное количество источников освещения, привязанных к одному каналу Render - 8. Это аппаратное ограничение.

Иллюминация 3D объекта может быть изменена с регулировкой его векторов Diffuse и Emissive. Получить к ним доступ можно также в Объектном Разделе, в закладке ‘Material’. Чем выше значение вектора Emissive, увеличит эффект самосвечения или окружающего света. Особенно для наружних сцен, повышение эмисии даст убедительный результат. Как было упомянуто выше, вектор освещения ‘Ambient’ (Окружение) служит в виде глобального вектора эмисии ‘Emissive vector’, для всех объектов, подверженных освещению этого источника.

1) Object Diffuse (1, 1, 1), Light Diffuse (1, 1, 1), Light Ambient (0, 0, 0)

2) Object Diffuse (1, 1, 1), Light Diffuse (1, 1, 1), Light Ambient (0.4, 0.4, 0.4)

3) Object Diffuse (1, 1, 1), Light Diffuse (1, 0.8, 0.6), Light Ambient (0, 0.2, 0.4)

Тени (Shadows)

Тени для динамических объектов, таких, как машины и передвигающиеся персонажи, могут быть сымитированы с помощью текстур.

Подобные плоскости теней визуализируются быстро и предоставляют убедительные результаты.

Тени реального времени (Real-time shadows)

Quest3D также поддерживает тени в реальном времени. Канал Stencil Shadow может быть виден, если канал Render настроен на просчет теней. Каналу Stencil Shadow для работы необходим вектор позиции источника освещения. 3D объекты (3D Objects) могут быть привязаны к StencilShadow, подразумевая SoftwareStencilShadowObject.

Аппаратная верси этого канала, FastShaderStencilShadowObject, работает быстрее, но не поддерживает незамкнутые объекты и скиннинговых персонажей.

Карты освещения (Light mapping)

Тени реального времени требуют большого количества сил для обработки. Более того, тени реального времени - жесткие и не поддаются влияюнию окружающего света (ambient lighting (radiosity)). Для повышения частоты кадров и создания сглаженного освещения и теней может быть использован метод карт освещения.

Световые карты - это процесс просчета света и теней выполненный единожды и сохраненный в виде информации в текстуру. После этого полученные ‘световые карты’ применяют к объектам, в качестве второй текстурной стадии и смешивают с диффузной текстурой.

Световые карты могут быть созданы в ряде продвинутых пакетов 3D моделирования, таких, как 3D Studio Max и Maya. Существует также возможность создания световых карт в Quest3D.

В Объектном Разделе (Object Section), в закладке ‘Texture Lighting’, ряд настроек определяет качество световой карты Quest3D. Визуализаторы (render) и источники освещения (light) могут быть выбраны, а также ширина и высота текстуры. Присутствует возможность просчитать свет, тени, или и то, и другое. Наконец, настройка Anti Aliasing управляет сглаженностью световой карты.

Перед тем, как 3D объект может принять световую карту, он должен получить соответствующий набор UV. Для довольно простых объектов, таких, как плоскости и ландшафты, может быть использован планарный UV меппинг Quest3D. Для более точного создания UV карт, пожалуйста, обратитесь к руководству пользователя вашего рабочего пакета 3D моделирования.

Урок

Необходимая сцена Quest3D:

  • ..\Tutorials\2.5 – Lighting and shadows\Lighting and shadows.cgr

Необходимые шаблоны:

  • Scene \ Lights \ Point Light
  • Scene \ Shadow \ Render Stencil Shadow
  • Scene \ Shadow \ Software Stencil Shadow Object
  • Variables \ Vector \ Vector with Values

Шаг за шагом:

  • Откройте сцену ‘Lighting and shadows.cgr’. Она содержит неосвещенную сцену, состоящую из городского блока и анимированного персонажа.
  • Перетяните шаблон Point Light в Граф Каналов и подключите к каналу ‘Character Render’. Обратите внимание на то, как освещение повлияло на персонаж.
  • Создайте ярлык (shortcut) канала ‘Point Light’ и присоедините его к каналу ‘City Render’. Обратите внимание на то, как освещение повлияло на окружающую среду.
  • Перейдите в Раздел Анимации (Animation Section).
  • В закладке ‘Light’ выделите ‘Point Light’ и подвигайте источник света в пространстве в обзорном виде Animation 3D View. Заметьте, теперь и персонаж и окружающий мир подвергаются его влиянию.
  • Переместите источник света в позицию (position) (0, 0, 5).
  • Смените ориентацию (rotation) на (0, -90, 0). Обратите внимание, что вращение точечного источника освещения не дает никакого эффекта.
  • Смените тип овещения ‘Light Type’, нажав на кнопку ‘Spot’ (прожектор). Влияние источника света изменится.
  • Измените внешний угол конуса ‘Outer Cone Angle’ на ‘120’, и внутренний угол конуса ‘Inner Cone Angle’ на ‘30’. Пронаблюдайте за градиентом света между этими углами.
  • Смените тип освещения ‘Light Type’, нажав на кнопку ‘Dir’ (направленный). Влияние источника света изменится.
  • Измените ориентацию (rotation) источника освещения на (30, -45, 0).
  • Переместите источник освещения в позицию (-100, 30, 100). Обратите внимание, что перемещение источника направленного света (directional light) не влияет на производимый им эффект.
  • Перейдите в Раздел Каналов (Channels Section).
  • Переименуйте канал ‘Point Light’ в ‘Sun Light’.
  • Добавьте канал Vector и присоедините его к потомственному входу ‘Ambient’ канала ‘Sun Light’. Измените его значения на (0.4, 0.4, 0.4). Обратите внимание на то, что и персонаж и окружающая среда стали ярче, как если бы подверглись влиянию окружающего дневного света.
  • Перетяните канал Render Stencil Shadow в Граф Каналов и подключите его к каналу ‘Project’.
  • Создайте ярлык вектора позиции (position vector) канала ‘Sun Light’ и подключите его к потомственному входу ‘Light vector’ канала ‘Shadow Renderer’.
  • Добавьте канал Software Stencil Shadow Object и подключите его к потомственному входу ‘Stencil Shadow Base Object’ канала ‘Render Stencil Shadow’.
  • Создайте ярлык для канала ‘Animated Character’ и подключите его к каналу ‘Software Stencil Shadow Object’. Обратите внимание, что объект персонажа теперь отбрасывает тень на окружение.
  • Перейдите в Раздел Анимации (Animation Section).
  • Подвигайте объект ‘Animated Character’ по сцене. Обратите внимание, что тень отбрасывается от позиции солнца.
  • Когда будете готовы, перейдите в Объектный Раздел (Object Section).
  • Нажмите на объект ‘Street’ в списке, чтобы выделить его.
  • Нажмите на поверхность (surface) 'Street 1' в списке, чтобы выделить ее.
  • В закладке ‘Texture’, нажмите на закладку ‘Stage 2’. Из выпадающего списка выберите набор ‘UV Set 1’.
  • В закладке освещения ‘Lighting’, нажмите на кнопку ‘Add Texture Lighting’. Обратите внимание, как текстура зеленой решетки на черном фоне применится к модели ‘Street’. Также теперь окажется доступным ряд опций в закладке ‘Lighting’.
  • Убедитесь, что ‘Environment Render’ все еще выделен, а ‘Animated Character Render’ нет. Крассный крест поверх иконки глаза означает, что визуализатор (render) не выделен.
  • Убедитесь, что ‘Sun Light’ выбран.
  • Установите ширину ‘Width’ и высоту ‘Height’ на 256. Нажмите кнопку ‘Set Absolute’. Обратите внимание, как обновится зеленая на черном решетка.
  • Убедитесь, что опции просчета освещения ‘Calculate lights’ и просчета теней ‘Calculate shadows’ выбраны. Остальные опции могут быть отключены.
  • Установите ‘Anti Aliasing’ на 1x.
  • Создайте тестовую карту освещения с этими настройками, нажав на кнопку ‘Calculate Lighting’ (Просчитать освещение). Появится окно прогресса. Учтите, что просчет световой карты может занять некоторое время, вплоть до нескольких минут. После просчета объект ‘Street’ долежн отобразить световую карту с тенями.
  • В закладке поверхностей ‘Surface’, из выпадающего списка смешивания текстур ‘Texture Blending’, выберите значение альфа 'Alpha value'.
  • В закладке настроек 'Properties', установите фактор текстуры 'Texture Factor' на '0.75'. Обратите внимание на то, что световая карта смешалась со слоем текстуры под ней.
  • В закладке освещения ‘Lighting’, установите ширину ‘Width’ и высоту ‘Height’ на 1024, а ‘Anti Aliasing’ на ‘4x’.
  • Создайте финальную световую карту высокого разрешения с этими новыми настройками, нажав на кнопку ‘Calculate Lighting’. Обратите внимание на то, что время просчета увеличилось.
  • Подождите, пока просчет световой карты завершится и изучите результат.
  • Создайте световые карты для оставшихся поверхностей объекта 'Street'.

Законченная сцена:

  • ..\Tutorials\2.5 – Lighting and shadows\Lighting and shadows – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.6: Cameras - Quest3D

Chapter 2.6: Cameras

Содержание

  • 1 2.6 Камеры
    • 1.1 Анимированная камера
    • 1.2 Нацеленная анимированная камера
    • 1.3 Инспектирующая объект камера
    • 1.4 Камера хождения от 1го лица
    • 1.5 Камера хождения от 3го лица
    • 1.6 Фактор приближения
    • 1.7 Плоскости обрезки
    • 1.8 Туман
  • 2 Уроки
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходимые шаблоны
    • 2.7 Шаг за шагом
    • 2.8 Законченная сцена

2.6 Камеры (Cameras)

Камера определяет точку обзора, с которой представляется сцена. Выбор для проекта правильной камеры важен, так как это непосредственно влияет на пользовательские впечатления, получаемые от сцены. Этот раздел описывает ряд доступных шаблонов камеры и их основные настройки.

Анимированная Камера (Animation Camera)

Анимированная камера может быть использована для того, чтобы провести пользователя по сцене. Она подобна обычной реальной кинокамере из жизни. Таже, этот анимированная камера предпочтительна для неинтерактивных сцен, таких, как визуализация, документалистика или скринсейверы.

Нацеленная Анимированная Камера (Animation Camera with Target)

Нацеленная Анимированная Камера (Animation Camera with Target) всегда смотрит на целевой объект. И камера, и вспомогательный объект могут быть анимированы.

Инспектирующая Объект Камера (Object Inspection Camera)

Quest3D - прекрасный пакет для продуктов визуализации. Инспектирующая Объект Камера (Object Inspection Camera) может вращаться вокруг 3D модели, позволяя пользователю осмотреть объект со всех сторон. Такие ‘продукты’ могут быть малы, как технологические приспособления, и огромны, как целые городские блоки.

Камера хождения от 1го лица (1st Person Walkthrough Camera)

Обычно желательно и полезно, для качественной архитектурной визуализации, чтобы вы словно побывали там. 1st Person Walkthrough Camera представляет сцену на привычном уровне глаз, и позволяет пользователю свободно перемещаться вокруг. Так как обзорный вид близок к реальной жизни, этот тип камеры предоставляет наиболее высокий уровень погружения в сцену. Многие компьютерные игры используют перспективную камеру от 1го лица.

Камера хождения от 3го лица (3rd Person Walkthrough Camera)

В отличие от обзорной точки от 1го лица, перспективная камера от 3го лица размещает камеру за пределами виртуального персонажа. 3rd Person Walkthrough Camera привязывается к этому персонажу и следует за ним, куда бы он ни направлялся.

При использовании камеры от 3го лица, уровень погружения в сцену может быть ниже. Тем не менее, персонаж может быть виден, как агент, посредством которого пользователь может взаимодействовать с окружающим миром. Некоторые пользователи находят перспективную камеру от 1го лица слишком конфронтирующей, и предпочитают ‘безопасность’ обзорного вида от 3го лица. В некоторых случаях, вид от 3го лица предоставляет больше обзора расположения персонажа и окружающего его мира.

Помимо точки обозрения, ряд дургих аспектов определяет камеру.

Фактор приближения (Zoom factor)

Фактор приближения - это быстрый способ приблизиться или отдалиться от чего-либо. Стандартное значение ‘1.0’ приводит к нормальному виду. Высокое значение Zoom Factor приближает сцену, более низкое, отдаляет.

Плоскости обрезки (Clipping planes)

Плоскости обрезки ‘clipping planes’ камеры - это виртуальные границы, между которыми визуализируется сцена. Полигональные поверхности за пределами этих границ не обрабатываются. Привязав шаблон Field of View Matrix к Camera, становится возможным вручную настроить плоскости обрезки (clipping planes). Этот шаблон позволяет изменить угол поля зрения (field of view) в градусах. Значения от 50 до 90 градусов - являются стандартными. Если плоскости обрезки размещены таким образом, что меньшее количество геометрии попадает между ними, производительность проекта возрастает.

Туман (Fog)

Туман может быть использован для того, чтобы смешать различные элементы виртуального окружения друг с другом. Он может придать настроение сцене и придать ей глубину. Преимуществом использования тумана является то, что дальнюю плоскость обрезки камеры (far clipping plane) можно приблизить и разместить сразу позади значения завершения тумана ‘Fog End’. Если использовать эту функцию правильно, это приведет к гладкому переходу между сценой и “пустотой” позади дальней плоскости обрезки.

Урок

Необходимая сцена Quest3D:

  • ..\Tutorials\2.6 – Cameras\Cameras 1.cgr

Необходимые шаблоны:

  • Scene \ Cameras \ Object Inspection Camera

Шаг за шагом:

  • Откройте сцену ‘Cameras 1.cgr’. Эта сцена содержит машину, присоединенную к рендеру.
  • Перетяните шаблон Object Inspection Camera в Граф Каналов. Привяжите ‘Object Inspection Camera’ к каналу ‘Render’.
  • Перейдите в Раздел Анимации.
  • Убедитесь, что окно обзорного вида Animation 3D View отображает сцену с помощью камеры проекта Project Camera.
  • Переключитесь в режим запуска Run Mode.
  • Зажмите правую клавишу мыши и перетяните мышь для вращения вокруг машины.
  • Когда будете готовы, переключитесь в режим редактирования Edit Mode.

Законченная сцена:

  • ..\Tutorials\2.6 – Cameras\Cameras 1 – Complete.cgr

Если хотите, вы можете сохранить данную группу каналов в папку вашего проекта. Следующие шаги связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\2.6 – Cameras\Cameras 2.cgr

Необходимые шаблоны:

  • Scene \ Camera \ Walkthrough Camera
  • Objects \ Collision \ Collision Object

Шаг за шагом:

  • Откройте сцену ‘Cameras 2.cgr’. Перейдите в Раздел Каналов. Эта сцена содержит городской блок, включающий в себя ряд зданий, подсоединенных к рендеру, без камеры. Три элемента улицы, ‘Car’, ‘Building_Collision_Objects’ и ‘Street’ будут использованы в качестве объектов коллизии (препятствия).
  • Переключитесь в режим редактирования Edit Mode.
  • Перетяните Collision Object, и подсоедините к нему канал ‘Street’. Оставьте канал ‘Street’ подключенным к рендеру.
  • Дважды щелкните по Collision Object и нажмите на ‘Create Tree’. Объект будет просчитан.
  • Перетяните шаблон Walkthrough Camera в Граф Каналов. Пока не подключайте его к каналу ‘Render’.
  • Привяжите Collision Object к последнему потомственному входу канала Fast Collision Response шаблона Walkthrough.
  • Создайте объекты коллизии для зданий и машины. Отключите канал ‘Building_Collision_Object’ от ‘Render’, но оставьте канал ‘Car’ подключенным.
  • Соедините канал ‘Walkthrough Camera’ с каналом ‘Render’. Обратите внимание, что окно Animation 3D View обновилось и отображает сцену с другой перспективы.
  • Привяжите канал ‘Camera Logic’ к ‘Start3DScene’. Если вы нажмете Пробел, камера вернется к изначальной позиции.
  • Чтобы задать высоту камеры, дважды щелкните по папке ‘In: Collision Spheroid Radius’ (это второй потомок ‘FastCollisionResponse’). Эта папка содержит вектор. Чтобы установить высоту камеры, смените значение Y на другое значение, например 1.9.
  • Перейдите в Раздел Анимации.
  • Переключитесь в режим запуска Run Mode.
  • Протестируйте сцену, пройдясь по городу с помощью клавиш со стрелками и мыши.
  • Нажмите пробел для сброса камеры.

Законченная сцена:

  • ..\Tutorials\2.6 – Camera’s\Camera’s 2 – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.7: Graphic user interface - Quest3D

Chapter 2.7: Graphic user interface

Содержание

  • 1 2.7 Графический интерфейс пользователя (GUI)
    • 1.1 HUD элементы интерфейса
    • 1.2 GUI в Quest3D
    • 1.3 Z буфер
    • 1.4 Ввод с мыши
    • 1.5 2D изображения
    • 1.6 Текст
    • 1.7 Шаблоны
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Шаг за шагом
    • 2.3 Законченная сцена

2.7 Графический интерфейс пользователя (Graphic user interface)

Пользовательский ввод влияет на приложение. Посредник, с помощью которого пользователь может взаимодействовать с программой, называется интерфейсом. Клавиатура и мышь являются частью интерфейса в большинстве приложений. Часть интерфейса, расположенная на экране компьютера, называется графическим интерфейсом пользователя (Graphic User Interface), или сокращенно GUI.

Графический интерфейс пользователя обычно выступает в виде 2D слоя поверх обычной сцены. Курсор мыши, различные кнопки, слайдеры и боксы ввода - все они могут быть частью GUI.

HUD элементы интерфейса (Head-up Display)

Неинтерактивные элементы 2D вывода являются лицевой частью интерфейса Head-up Display, или сокращенно HUD. Примерами элементов HUD являются счетчики очков, логотипы компаний, миникарты виртуального окружения пользователя и вращающиеся 3D представления текущего физического состояния аватара пользователя в компьютерной игре.

Термины графического интерфейса пользователя ‘Graphic User Interface’ и лицевой части интерфейса ‘Head-up Display’ часто используются, как синонимы. На картинке выше, логотип Quest3D и тестовая информация являются элементами HUD, а значения RGB и опция вращения Rotation являются частями GUI.

GUI в Quest3D

В Quest3D, 2D слой, распологающийся поверх остальной сцены, визуализируется особым способом. Фактически, это вторая 3D сцена, визуализируемая с помощью собственной камеры с особым типом проецирования. Текстуры GUI делаются четкими благодаря отключению фильтра anti-aliasing.

Кроме этой техники вы можете использовать канал Copy Image для создания четко пикселизированных элементов GUI.

Z буфер

Каждый кадр, в котором полностью отрендерена 3D сцена, следует за слоем GUI и HUD. В промежутке Z Буфер очищается, чтобы избежать возможных помех со стороны 3D сцены в направлении интерфейса.

Ввод мыши (Mouse input)

Действия мыши с элементами GUI могут быть осуществлены с помощью Mouse Over и User Input channels.

2D изображения

Идеально пикселизированные 2D изображения могут быть отрендерены с помощью канала Copy Image. Разрешение экрана не имеет значения, картинка всегда будет отображена с одинаковым количеством пикселей. Этот метод производит кристально чистые изображения.

Текст

Канал Text Out может быть использован для быстрого вывода 2D текста на экран. Проверочная информация, такая, как частота кадров fps и разрешение экрана легко могут быть отображены с помощью этого метода.

Шаблоны (Templates)

Ряд готовых к использованию элементов GUI может быть найден в списке шаблонов Templates.

Урок

Графический интерфейс пользователя состоит из кнопок и слайдеров, позволяющих пользователю влиять на приложение. Следующий урок имеет дело с рядом таких элементов.

Необходимая сцена Quest3D:

  • ..\Tutorials\2.7 – Graphic user interface\Graphic user interface.cgr

Шаг за шагом:

  • Откройте сцену ‘Graphic user interface.cgr’. Она содержит объект машины и Object Inspection Camera. Обратите внимание, что изображение логотипа Quest3D размещается поверх сцены, отображенной в окне обзорного вида Animation 3D View.
  • Создайте ярлык канала ‘Checkbox’ и подключите его к каналу ‘Mouse Over Checkbox’ (Мышь над чекбоксом).
  • Создайте ярлык для канала ‘Checkbox State’ (Состояние чекбокса) и кодключите его к каналу ’Rotation’ (Вращение), который является частью движения Motion объекта ‘Car’. Обратите внимание, что объект ‘Car’ расположен в папке ‘3D Scene’.
  • Перейдите в Раздел Анимации.
  • В закладке ‘Camera’, выберите ‘GUI Camera’.
  • В режиме перемещения ‘Move Mode’, поставьте замок на Z position.
  • В закладке ‘Object’, выберите объект ‘Quest3D Logo’ и переместите его в нижний правый угол экрана.
  • Переключитесь в режим Run Mode.
  • Зажмите правую клавишу мыши и повращайтесь вокруг объекта автомобиля.
  • Нажмите на чекбокс, чтобы проверить его. Обратите внимание, что машина начала вращаться.
  • Когда закончите, перейдите в режим Edit Mode.

  • Перейдите в Раздел Каналов.
  • Создайте ярлык канала ‘R Slider Value’ и подключите его к потомственной ссылке ‘R’ канала ‘Emissive’ поверхности ‘Car Chassis’ объекта ‘Car’. Обратите внимание, что объект ‘Car’ расположен в папке ‘3D Scene’.
  • Перейдите в Раздел Анимации.
  • Переключитесь в режим Run Mode.
  • Протестируйте слайдер ‘R’, потянув за него слева направо. Пронаблюдайте изменение цвета авто.
  • Когда будете готовы, переключитесь в режим Edit Mode.
  • Перейдите в Раздел Каналов.
  • Подключите канал ‘Debug’ к каналу ‘Project’ . Обратите внимание на статистику, появившуюся на экране.
  • Перейдите в Раздел Анимации.
  • Проверьте всю статистику: частоту кадров (framerate), ширину и высоту разрешения экрана (width and height), поддержку бамповых карт (bump map) и поддержку пиксельных шейдеров (pixel shading).

  • Вернитесь в раздел каналов, найдите объект Rotation Check Box и привяжите канал Checkbox к Mouse Over Checkbox. Если вы теперь нажмете на чекбокс в окне анимации, автомобиль начнет вращаться.

Законченная сцена:

  • ..\Tutorials\2.7 – Graphic user interface\Graphic user interface – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.8: Sound and music - Quest3D

Chapter 2.8: Sound and music

Содержание

  • 1 2.8 Звук и музыка
    • 1.1 Формат .Wav
    • 1.2 Канал Sound Command
    • 1.3 3D позиционирование
    • 1.4 Формат .MP3
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимый звук
    • 2.3 Необходимые шаблоны
    • 2.4 Шаг за шагом
    • 2.5 Законченная сцена

2.8 Звук и музыка (Sound and music)

От простых звуков, сопровождающих манипуляции с меню до полной атмосферного музыкального сопровождения, audio действительно может добавить сцене атмосферности. Она помогает создать настроение, также остро, как это делает графика и живая анимация. Испльзование записей речетатива может помочь пользователю лучше воспринять приложение. Выключите звук, пока смотрите телевизор или играете в компьютерную игру и вы немедленно лишитесь богатства аудиомира.

Звук может храниться на компьютере в цифровой форме, во многих различных форматах. Quest3D поддерживает файлы ‘.wav’ и ‘.mp3’.

Формат .Wav

Канал Sound File используется для хранения ‘.wav’ дорожек в пределах Quest3D. Окно его настроек (properties) содержит ряд опций, включающих в себя иконки загрузки, воспроизведения, остановки и паузы дорожки. Как говорит за себя название, опция ‘Repeat’ позволяет сделать воспроизведение цикличным.

Скорость ранжируется от 0% до 200%, и громкость регулируется от 0% до 100%. И скорость и громкость могут быть динамически изменены посредством их соответствующих потомственных входов. Балланс (panning) управляет распределением звука между левой и правой колонкой: 0% означает, что используется только левая, 100% означает, что используется только правая. 50% (стандартное значение) воспроизводит звук на одинаковых уровнях для обеих колонок.

Канал Sound Command

Канал Sound Command позволяет вам управлять всеми аспектами дорожки, такими, как воспроизведение и звук. Он также позволяет загружать файлы ‘.wav’ с жесткого диска. Выпадающий список представляет все доступные опции. Sound Command должен быть вызван однажды для того, чтобы быть запущеным и повлиять на всех своих потомков типа канала Sound File.

3D позиционирование

Кроме простого воспроизведения звука также существует возможность расположить его в 3D пространстве. 3D позиционирование звука требует канал Listener. Обычно он подключается к местонахождению виртуальной камеры, и автоматически подстраивает громкость, балланс и частоту, просчитывая относительную позицию и дистанцию звука. Только моно (Mono) звуковые дорожки могут быть размещены в 3D пространстве. Опции позиционирования ‘3D Positioning’ канала Sound File определяют качество имитации. Более высокое качество требует больше мощности cpu.

‘Silent at 1/* of full volume’ - значение отключения, которое было введено только в целях исполнения. Настройка ‘Half volume every * units’ может рассматриваться как значение полураспада звука. Изменение этого значения позволяет вам имитировать источники различных размеров. Звук пчелы, к примеру, может иметь значение полураспада 0.01 единицы, в то время, как звук самолета уполовинивается каждые 10 секунд.

Окно настроек Listener содержит три продвинутых опции.

Фактор Допплера ‘Doppler Factor’ описывает изменение шага (pitch), когда звук удаляется или приближается к слушателю. Стандартное значение 1.0 производит эффект, подобный ситуациям реального мира. Фактор Прокрутки ‘Rolloff Factor’ влияет на период полураспада значений всех звуков сцены. Стандартное значение 1.0 производит имитацию реального мира, 0.0 полностью отключает прокрутку, а 2.0 увеличивает эффект. Фактор Дистанции ‘Distance Factor’ позволяет вам компенсировать различные системы измерения. Если одна единица в Quest3D представляет один фут для ваших моделей, вы можете ввести 0.3048 в качестве фактора дистанции.

3D звук должен быть правильно настроен в Windows. Проверьте настройку ‘Звуковых и Аудио Устройств’ в Панели Управления.

Формат .MP3

В Quest3D также поддерживается формат ‘.mp3’. Канал MP3 File используется для хранения звуковых дорожек этого типа. С помощью его окна настроек возможно загрузить файл с диска. Опция сохранения файла в группу каналов ‘Save File in Channelgroup’ позволяет вам хранить данные дорожки внутри самого канала. Конечно, это увеличит размер файла группы каналов. Единственный потомок MP3File может также хранить имя файла в форме текстового канала Text.

Канал MP3 Control может быть использован для управления воспроизведением и громкостью. Он также может быть использован для извлечения информации по общей длине и текущей проигрываемой позиции, а также для перемещения к определенной позиции дорожки.

MP3 не может быть позиционирован в 3D пространстве.

Урок

Необходимая сцена Quest3D:

  • ..\Tutorials\2.8 – Sound and music\Sound and music.cgr

Необходимые звуки:

  • ..\Resources\Sounds\Bird.wav

Необходимые шаблоны:

  • Logic \ Channel Caller
  • Logic \ Trigger (x2)
  • Input \ UserInput (x2)
  • Sound \ Sound File
  • Sound \ Sound Command (x2)
  • Sound \ Listener

Шаг за шагом:

  • Откройте сцену ‘Sound and music.cgr’. Она содержит простую 3D сцену и камеру хождения от первого лица walkthrough.
  • Добавьте канал Sound Command и дважды щелкните по нему для открытия окна свойств. Выберите команду ‘Play’ из выпадающего списка и нажмите ‘OK’ для подтверждения. Подключите канал ‘Sound Command’ к каналу ‘Play Sound’.
  • Перетяните канал Sound File в Граф Каналов и подключите его к Sound Command. Дважды щелкните по нему для открытия окна свойств. Нажмите на иконку загрузки Load, и найдите файл ‘Car engine.wav’. Нажмите ‘Open’ для подтверждения.
  • Убедитесь, что окно обзорного вида Animation 3D View открыто.
  • Переключитесь в режим Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу ‘Space’. Обратите внимание, что Sound Command запущен единожды и звук играет.
  • Переключитесь в режим Edit Mode.
  • Добавьте другой канал Sound Command и подключите его к каналу ‘Stop Sound’. Установите Sound Command на ‘Stop’. Привяжите Sound Command к каналу ‘Stop Sound’.
  • Привяжите оригинальный канал ‘Sound File’ ко второму каналу Sound Command.
  • Переключитесь в режим Run Mode.
  • Протестируйте сцену, нажав клавишу ‘Space’. После нескольких секунд, нажмите клавишу ‘Backspace’. Обратите внимание, что звук перестал играть.
  • Переключитесь в режим Edit Mode.
  • Дважды щелкните по каналу Sound File. Из выпадающего списка 3D позиционирования (3D Positioning), выберите ‘Normal’. Пометьте бокс ‘Repeat’ для цикличного воспроизведения звука.
  • Создайте ярлык (shortcut) канала ‘Motion’ канала ‘Car’, и подключите этот ярлык к первому потомственному входу канала Sound File. Звук теперь присоединен к расположению 3D объекта.
  • Перетяните Listener в Граф Каналов и подключите его к оператору каналов (channel caller) в Графе Каналов и подключите его к ‘Audio’ .
  • Создайте ярлык Motion канала ‘Walkthrough Camera’. Подключите этот ярлык к Listener.
  • Убедитесь, что окно обзорного вида Animation 3D View отображает сцену используя проектную камеру Project Camera.
  • Переключитесь в режим Run Mode.
  • Нажмите кнопку ‘Space’ для воспроизведения звуковой дорожки.
  • Воспользуйтесь клавишами со стрелками для приближения и отдаления от 3D объекта. Обратите внимание, как это влияет на громкость.
  • Воспользуйтесь мышью для вращения вашего обзорного вида. Обратите внимание, как звук перемещается влево и вправо, в зависимости от относительной позиции 3D объекта к камере.

Законченная сцена:

  • ..\Tutorials\2.8 – Sound and music\Sound and music – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.9: Landscapes - Quest3D

Chapter 2.9: Landscapes

Содержание

  • 1 2.9 Ландшафты
    • 1.1 Карты высот
    • 1.2 Текстуры
  • 2 Множественные проходы
    • 2.1 Небесный купол
    • 2.2 Освещение
    • 2.3 Туман
    • 2.4 Рисование Природы
    • 2.5 Природа / Раздел Поиска Пути
    • 2.6 Настройки Рисования Природы
    • 2.7 Шаблоны
  • 3 Урок
    • 3.1 Необходимая сцена Quest3D
    • 3.2 Необходимые шаблоны
    • 3.3 Шаг за шагом
    • 3.4 Законченная сцена

2.9 Ландшафты (Landscapes)

Создание и посещение виртуальных внешних окружений может быть весьма полезным. Они могут быть как достаточно сложными, так и совершенно простыми, ценой частоты кадров. Этот раздел обсуждает методы создания ландшафтов пейзажей и необходимых действий для их правильного выполнения с учетом различных приемов оптимизации.

Виртуальные ландшафты обычно создаются в виде больших решетчатых поверхностей. Высота (значение Y) различных вершин обуславливает холмы и горы.

Карты высот (Height maps)

Большинство коммерческих пакетов 3D моделирования, таких, как 3D Studio Max и Maya позволяют вам создавать ландшафты напрямую или косвенно. Так называемые черно-белые 'карты высот' (‘height map’) могут определять значение Y вершин, составляющих поверхность: черный - самая нижняя точка, белый - самая верхняя.

Пожалуйста, обратитесь к справочной документации вашего рабочего пакета 3D моделирования за дополнительной информацией. Ключевые слова: ‘height map’ (карты высот), ‘displace’ (смещение).

Текстуры (Textures)

После этого к поверхности применяется одна или более текстур. Различные 'текстурные стадии' (‘texture stages’) могут быть смешаны друг с другом с помощью изображений альфа.

Множественные проходы (Multiple passes)

В Разделе 2.4, ‘Свойства поверхностей’, обсуждались основы методов смешивания в Quest3D. Для достижения эффекта, приведенного выше, и возможности его поддержки с помощью старых графических карт, рекомендуется использовать множественные проходы. Под этим подразумевается визуализация поверхности более, чем единожды и смешивание полученных результатов с помощью значения прозрачности (transparency).

Визуализация типичной поверхности ландшафта может включать следующие проходы: 1. Первый слой, например, грязь (UV set 0)

2. Второй слой, например, трава (UV set 0), примешанный по значению отдельной текстуры альфа (alpha texture) (UV set 1).

3. Слой световой карты (light map), использующий операцию умножения ‘multiply’ (UV set 1).

Небесный купол (Sky dome)

Небо в виртуальных открытых средах обычно представляется с помощью купола.

Освещение (Lighting)

Небесный свет может быть сымитирован с помощью сильного направленного освещения (directional light). Вдобавок, значения эмиссии (emissive) всех 3D объектов сцены могут быть увеличены, имитируя radiosity (непрямое освещение). Световые карты и тени реального времени также могут улучшить открытую сцену. Смотрите Раздел 2.5 для дополнительной информации по освещению и теням.

Туман (Fog)

Туман может создавать определенное настроение и глубину. Преимуществом использования тумана является открывающаяся возможность приблизить дальнюю плоскость обрезки камеры (far clipping plane), в результате чего будет повышена частота кадров. Смотрите Раздел 2.6, посвященный камерам, для получения дополнительной информации.

Рисование Природы (Nature Painting)

Многие открытые сцены в избытке изображают деревья и травы. Quest3D представляет продвинутую систему, называемую 'Рисованием Природы' (‘Nature Painting’). Она позволяет вам с легкостью добавлять сотни деревьев и кустарников в сцену. Система Рисования Природы оптимизирована для производительности сцены и использует аппаратные графические средства вашего компьютера для быстрой и эффективной визуализации сцен.

Канал Nature Generator располагается между каналами объекта Surface и 3D ObjectData. Он содержит позицию, ориентацию и масштаб (position, rotation и scale) всех его клонов, а также дополнительную информацию, применяемую ко всем клонам. Коллизирующий объект, по которому выполняется рисование, должен быть привязан к Nature Generator.

Раздел поиска пути ‘Nature / Pathfinding’ предоставляет легкий доступ ко всей своей функциональности.

Внешний вид раздела Природы / Поиска Пути (Nature / Pathfinding)

Настройки Рисования Природы (Nature Painting properties)

С помощью закладки рисования природы ‘Nature Painting’, можно управлять всеми аспектами объектного размещения. Ориентация и масштаб могут быть произвольными. Объекты могут быть размещены хаотично, или в виде групп, используя опцию ‘Area’ (область). Значение ‘Cull distance’ (исчерпывающая дистанция) может быть использовано для прекращения визуализации объектов Nature Paint за пределами заданного расстояния от камеры. Значение ‘Fade distance’ (дистанция затухания), может быть использовано для смешивания клонов с окружением, с целью маскировки жесткого исчерпывания. Перед тем, как объект Nature Paint может быть потушен, режим прозрачности (transparency) должен быть установлен правильно. Правильная настройка, ‘Alpha Value and Texture’ (Значение альфа и текстура), может быть найдена в Объектном Разделе, в закладке поверхностей ‘Surface’.

Опция ‘Face camera’ (лицом к камере), может предоставить удовлетворительные результаты, но использует большое количество энергии обработки. Рекомендуется использовать ее только на простых объектах Nature Paint, таких, как плоскости, отображающие текстуру травы.

Шаблоны (Templates)

Quest3D укомплектован рядом предварительно настроенных ландшафтов, моделями деревьем и травы. Они могут быть использованы напрямую из меню шаблонов Templates.

Урок

Необходимая сцена Quest3D:

  • ..\Tutorials\2.9 – Landscapes\Landscapes.cgr

Необходимые шаблоны:

  • Objects \ Object Data \ Plants and Trees \ NatureGenerator

Шаг за шагом:

  • Откройте сцену ‘Landscapes.cgr’. Она содержит ландшафт, объект травы, готовый к рисованию природы и модель дерева. Она также содержит 3D купол неба и камеру хождения (walkthrough camera).
  • Перейдите в Объектный Раздел (Object Section).
  • Нажмите на объект ‘Landscape’, чтобы выбрать его.
  • Нажмите на поверхность ‘Dirt Layer’ в списке, чтобы выбрать ее.
  • Перейдите в закладку текстурных стадий ‘Texture Stages’, в правой части экрана.
  • Убедитесь, что выделена стадия ‘Texture Stage 1’.
  • Перейдите в закладку ‘Textures’ в правой части экрана. Обратие внимание, что подсвечена текстура, используемая на данный момент. Дваждй щелкните на текстуру, чтобы вызвать окно ее настроек.
  • Нажмите кнопку загрузки ‘Load’ и перейдите в папку ‘..\Resources\Textures\Landscapes\’. Она содержит ряд текстур местности. Выберите грязный вариант и нажмите ‘Open’ для подтверждения. Обратите внимание, что в окне предварительного просмотра появилось новое изображение. Нажмите ‘OK’ для закрытия окна Texture.
  • Нажмите на поверхность ‘Grass Layer’ в списке, чтобы выбрать ее.
  • Выберите стадию ‘Texture Stage 1’ в закладке ‘Texture Stages’.

В закладке ‘Textures’, дважды щелкните на подсвеченной текстуре для вызова окна ее настроек.

  • Нажмите кнопку ‘Load’ и из папки выберите вариант с травой. Нажмите ‘Open’ для подтверждения. Обратите внимание, что новое изображение отображено в окне предварительного просмотра. Нажмите ‘OK’ для закрытия окна Texture.
  • Выберите стадию ‘Texture Stage 2’ в закладке ‘Texture Stages’.

В закладке ‘Textures’, дважды щелкните на этой текстуре для открытия окна ее свойств.

  • Нажмите кнопку загрузки альфа ‘Load Alpha’ и из папки выберите текстуру ‘Alpha’. Нажмите ‘Open’ для подтверждения. Нажмите ‘OK’ для закрытия окна Texture.
  • Перейдите в закладку поверхностей ‘Surface’, в левой части экрана.
  • Выберите опцию прозрачности ‘Alpha Texture’ (transparancy). Обратите внимание, что два текстурных слоя ландшафта теперь смешались друг с другом.

  • Перейдите в раздел Природы / Поиска пути (Nature / Pathfinding).
  • Нажмите на объект ‘Grass Nature Generator’, чтобы выбрать его.
  • Нажмите на кнопку режима рисования (‘Paint Mode’).
  • Переместите указатель мыши по ландшафту в обзорном виде Animation 3D View. Обратите внимание, что объект следует за указателем мыши и располагается на правильной высоте находящейся под ним поверхности. Нажмите левую клавишу мыши для размещения клона плоскости травы. Разместите еще несколько плоскостей.
  • Выберите опцию ‘Face camera’ (лицом к камере), а также ‘Limit Y axis’ (ограничить по оси Y). Обратите внимание, как все клоны выровнялись по камере.
  • Установите дистанцию угасания ‘Fade distance’ на 0 и исчерпывающую дистанцию ‘Cull distance’ на 50. Обратите внимание, что чем дальше от камеры располагается клон, тем больше он сливается с окружением. Клоны за пределами 50 единиц не визуализируются совсем.
  • Снова нажмите кнопку режима рисования ‘Paint Mode’ для выхода.
  • Перейдите в Раздел Каналов (Channels Section).
  • Выберите и удалите соединение между каналами ‘3D Object Data’ и ‘Tree Leaves’.
  • Добавьте канал Nature Generator и подключите его к каналу ‘Tree Leaves’. Переименуйте его в ‘Tree Leaves Nature Generator’.
  • Подключите канал ‘3D Object Data’ к каналу ‘Tree Leaves Nature Generator’.
  • Сделайте ярлык канала ‘Collision Object’, присоединенного к каналу ‘Grass Nature Generator’ и подключите его к потомственному входу ‘Collsion Object’ канала ‘Tree Leaves Nature Generator’. Объект ‘Tree’ теперь готов к рисованию.
  • Перейдите в закладку Природы / Поиска пути (Nature / Pathfinding).
  • Нажмите на объект ‘Tree Leaves Nature Generator’, чтобы выбрать его.
  • Зажмите клавишу control и нажмите на объект ‘Tree Trunk Nature Generator’ для добавления его в выделение.
  • Нажмите на кнопку режима рисования ‘Paint Mode’.
  • В меню ‘Paint sizing options’ (опции масштабирования рисования) установите значения ‘randX’, ‘randY’ и ‘randZ’ на 0.5. Разместите несколько деревьев. Обратите внимание, как они варьируются в размерах.
  • Выберите опцию ‘Area’ (область), установите ‘Size’ (размер) на 250 и ‘Density’ (плотность) на 15%. Разместите еще несколько деревьев одинарным нажатием мыши.
  • Снова нажмите кнопку ‘Paint Mode’ для выхода.
  • Перейдите в Раздел Анимации (Animation Section).
  • Убедитесь, что обзорный вид Animation 3D View отображает сцену с помощью камеры проекта Project Camera.
  • Переключитесь в режим Run Mode.
  • Протестируйте сцену, прогулявшись по ландшафту с помощью клавиш со стрелками и мыши.

Законченная сцена:

  • ..\Tutorials\2.9 – Landscapes\Landscapes – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 2.10: Particle systems - Quest3D

Chapter 2.10: Particle systems

Содержание

  • 1 2.10 Системы частиц
    • 1.1 Движение
    • 1.2 Излучатели
    • 1.3 Свойства поверхности
    • 1.4 Типы
    • 1.5 Канал Particle Flow Grid
    • 1.6 Справочное Руководство
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

2.10 Системы частиц (Particle systems)

Многие спецэффекты в кино и играх, такие, как огонь, дым, взрывы и все типы магических эффектов в своей общности имеют важную связь: все они созданы с помощью так называемых 'систем частиц' (‘particle systems’).

Система частиц - это коллекция объектов, испускаемых излучателем (emitter) и обычно перемещающихся и изменяющихся во времени. Частицы - это квадратные объекты, расположенные лицом к камере.

Движение (Motion)

Позиция, ориентация и масштаб хранятся для каждой частицы системы. Вдобавок, могут быть задействованы другие атрибуты, такие, как скорость, цвет и прозрачность. Силы, такие, как гравитация, могут быть применены ко всем частицам системы.

Излучатели (Emitters)

Частицы распространяются излучателем (emitter). В Quest3D, это форма канала 3D Object Data. Система частиц циклично проходит сквозь все вершины объекта и постоянно излучает частицуы из одной из этих позиций. Хаотично распологая ряд вершин в 3D пространстве, это также приведет к хаотичному излучению частиц. Это производит убедительные результаты для спецэффектов, таких как огонь и дым.

Свойства поверхности (Surface properties)

Внешний вид системы частиц определяется диффузной и альфа текстурами, используемыми квадратными объектами. Смотрите Раздел 2.4 для дополнительной информации о свойствах поверхностей и методах смешивания.

Типы

Quest3D укомплектован двумя системами частиц. Канал Particle Object представляет собой компактный вариант, и может быть использован для простых эффектов, таких, как пламя.

Продвинутая система частиц состоит из ряда каналов и может быть использована, например, для имитации дыма, находящегося в пределах коллизионного объекта.

Продвинутая система частиц предоставляет возможность большего контроля над атрибутами, такими, как скорость, вращение, размер и цвет. Графики Envelopes желаемых функций, могут быть подключены к каналу излучателя Particle Emitter. Значение продвинутой базы функций ‘Advanced Function Base’ Value используется как индекс для каждого из этих графиков Envelopes.

Канал Particle Flow Grid

Канал Particle Flow Grid может быть использован для управления потоком системы. Он разбивает коллизионный объект на несколько частей и просчитывает силы внутри каждой из них. Силы (forces) могут быть созданы коллизионным объектом, внешними объектами и самими частицами.

Коллизия частицы просчитывается, как коллизия точки. Поэтому, квадраты частиц могут пробиваться сквозь их объекты коллизии. Хорошей практикой является создание меньших версий настоящих объектов в качестве коллизионных. Также, как всегда, упрощенные коллизионные объекты приводят к повышению производительности.

Справочное Руководство

Различные каналы продвинутой системы частиц описаны в более подробных деталях в Справочном Руководстве Quest3D.

Урок

Этот урок предназначен только для пользователей Power и VR редакций.

Необходимая сцена Quest3D:

  • ..\Tutorials\2.10 – Particle systems\Particle systems.cgr

Необходимые шаблоны:

  • Objects \ Particles \ Simple \ Small Fire
  • Power Edition \ Particle Simulation \ Smoke
  • Channel List - ParticleFlowGrid
  • Objects \ Collision \ Collision Object
  • Variables \ Value \ Value
  • Variables \ Vector \ Vector with Envelopes

Шаг за шагом:

  • Откройте сцену ‘Particle systems.cgr’. Она содержит куполообразный объект окружения и невидимый, меньший коллизионный объект.
  • Перетяните шаблон Small Fire в Граф Каналов и подключите его к каналу ‘Render Scene’. Обратите внимание, что эффект огня немедленно появился в обзорном окне Animation 3D View.
  • Добавьте шаблон Smoke и подключите его к каналу ‘Render Scene’. Обратите внимание, что эффект дыма немедленно появился в обзорном окне Animation 3D View. Также обратите внимание, что частицы дыма свободно движутся через поверхности окружения.
  • Измените значение Y вектора позиции (position vector) на ‘1.0’.
  • Перетяните канал Particle Flow Grid в Граф Каналов и подключите канал ‘Particle Emitter’ к объекту ‘Smoke’.
  • Добавьте канал Collision Object и подключите его к каналу ‘Particle Flow Grid’.
  • Подключите канал ‘Interior Collision Object’ к каналу Collision Object.
  • Дважды щелкните на канале ‘Particle Flow Grid’ для открытия окна его свойств. Впишите ‘10’ для ‘x’, ‘y’ и ‘z’ компонентов разрешения ‘Resolution’. Выберите опцию ‘Show Grid’ (показать решетку) и нажмите кнопку ‘Generate Grid’ (создать решетку). Обратите внимание, что решетка отображается в обзорном окне Animation 3D View (когда опция динамических объектов ‘Dynamic objects’ включена - on’). Нажмите ‘OK’ для подтверждения.
  • Дважды щелкните по каналу ‘Particle Emitter’ для открытия окна его свойств. В закладке ‘Grid’, выберите опцию ‘Particles Are Affected By Grid’ (частицы подвержены влиянию решетки). Обратите внимание в обзорном виде Animation 3D View, что частицы подверглись влиянию решетки. Нажмите ‘OK’ для подтверждения.

  • Перетяните канал Value в Граф Каналов и подключите его к потомственному входу ‘Advanced Function Base’ канала ‘Particle Emitter’. Переименуйте Value в ‘Advanced Function Base’.
  • Добавьте шаблон Vector (использующий envelopes) и подключите к потомственному входу ‘Particle Color Function’ канала ‘Particle Emitter’. Переименуйте графики Envelopes в ‘Red’, ‘Green’ и ‘Blue’, соответственно.
  • Создайте ярлык для канала ‘Advanced Function Base’ и подключите его к каждому из трех Envelopes, только что добавленных вами.
  • Дважды щелкните на Envelope ‘Red’ для открытия окна настроек. Добавьте ключ в позиции (0, 0.5) и нажмите ‘OK’ для подтверждения.
  • Дважды щелкните на Envelope ‘Green’ для открытия окна настроек. Добавьте ключ в позиции (0, 0.5) и нажмите ‘OK’ для подтверждения.
  • Дважды щелкните на Envelope ‘Blue’ для открытия окна настроек. Добавьте ключ в позиции (0, 0.5). Также добавьте ключ в позиции (50, 0) и нажмите ‘OK’ для подтверждения. Обратите внимание, что частицы будут становиться синими в течение их индивидуального жизненного времени.

Законченная сцена:

  • ..\Tutorials\2.10 – Particle systems\Particle systems – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.7: Pathfinding - Quest3D

Chapter 3.7: Pathfinding

Содержание

  • 1 3.7 Поиск пути
    • 1.1 Канал 3D Graph
    • 1.2 Канал Motion Planning
    • 1.3 Внешний вид Раздела Поиска Пути
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

3.7 Поиск пути (Pathfinding)

В виртуальные миры может быть привнесена жизнь с помощью добавления прогуливающихся персонажей или перемещающихся автомобилей. Они могут быть анимированы заранее, но иногда требуются более гибкие решения. Персонажи должны остановиться перед светофором, открывающимся мостом или взаимодействовать друг с другом. Поиск пути Pathfinding позволяет планировать подобные действия.

Поиск пути зависит от ряда путевых точек (waypoints), или ‘узлов’, расставленных в виртуальном окружении. Объекты могут быть направлены к этим узлам напрямую, или через структуру путей. Особенно при сложном окружении, важна правильная настройка структуры пути.

В Quest3D, поиск пути управляется с помощью двух каналов. Первый из них - 3D Graph (3D график), который содержит всю информацию об узлах и структуре пути. Второй - канал Motion Planning (планирование движения), просчитывающий самый быстрый маршрут в структуре пути от текущей позиции до точки назначения.

Канал 3D Graph

Узлы 3D Graph должны быть нарисованы на коллизионном объекте. Этот коллизионный объект может быть подключен к первому потомственному входу канала 3D Graph. Второй потомственный вход канала 3D Graph также ожидает канал коллизионного объекта Collision Object. Этот объект используется для определения линии взгляда при просчете пути.

Эти два коллизионных объекта могут быть одни и тем же. В любом случае, рекомендуется создавать их из как можно меньшего количества полигонов. Обычно это означает создание упрощенной версии 3D модели с целью коллизии.

Канал Motion Planning (Планирование Движения)

Канал Motion Planning имеет четыре потомственных входа.

Первый потомственный вход требует текущую позицию объекта при поиске пути. Второй представляет позицию пункта назначения. Третий - диапазон следующего узла ‘Next node range’. Если объект передвигается в пределах дистанции любого заданного узла, он будет следить за следующим узлом в просчитанном маршруте. Четвертый - 3D Graph, содержащий всю информацию об узлах и пути.

Позиция узла может быть запрошена с помощью канала Get Motion Planning Info Vector. Он требует канал Motion Planning в качестве первого потомка. Вторым потомком является Value, определяющее, какой узел графа 3D Graph будет возвращен.

Объект с поиском пути может продвигаться вперед к своей цели. Смотрите Раздел 3.6 для более детальной информации по перемещению объектов с помощью векторов.

Внешний вид Раздела Поиска Пути (Pathfinding Section Layout)

Узлы и пути могут быть размещены и стерты в разделе Nature / Pathfinding в Quest3D.

Урок

Следующее упражнение позволит анимированному персонажу найти путь между несколькими путевыми точками городской сцены.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.7 – Pathfinding\Pathfinding.cgr

Необходимые шаблоны

  • Logic \Pathfinding \ 3D Graph
  • Objects \Collision \ Collision Object
  • Logic \ Pathfinding \ Motion Planning
  • Logic \ Pathfinding \ Motion Planning Info Vector
  • Variables \ Value \ Value
  • Variables \ Matrix \ Matrix Operator
  • Variables \ Arrays \ Array Value
  • Variables \ Arrays \ Array Table
  • Variables \ Value \ Set Value

Шаг за шагом:

  • Откройте файл ‘Pathfinding.cgr’. Он содержит сцену небольшого городского блока, персонаж с множеством анимаций и настройкой коллизии, а также камера, которая следует за персонажем.
  • Добавьте канал 3D Graph и подключите его к каналу ‘Pathfinding’.
  • Перетяните Collision Object в Граф Каналов и подключите его к первому потомственному входу канала ‘3D Graph’.
  • Создайте ярлык канала ‘Street’ и подключите его к каналу ‘Collision Object’. 3D Graph теперь готов к рисованию узлов.
  • Перейдите в раздел Природы/Поиска пути (Nature / Pathfinding) и нажмите на закладку ‘Pathfinding Graph’.
  • Нажмите на ‘3D Graph’, чтобы выбрать его.
  • Нажмите кнопку ‘Paint’ (рисовать) для входа в режим рисования.
  • Переместите указатель мыши в обзорный вид Animation 3D View. Обратите внимание на красный круглый маркер. Это курсор рисования узлов.
  • В окружении городского блока найдите здание из красного кирпича и разместите узел напротив одной из дверей, нажав левой клавишей мыши на тротуар. От узла к текущей позиции курсора рисования будет протянута линия. Разместите другой узел на расстоянии нескольких метров, но в пределах тротуара. Линия все еще связывает два узла, а с текущей позицией курсора рисования связана новая. Нажмите правую клавишу мыши, чтобы прервать рисование.
  • Разместите еще несколько узлов в городской сцене. По возможности поддерживайте чистоту 3D Graph. Примером правильного графика может быть виден на изображении ниже.
  • Когда будете готовы, нажмите кнопку ‘Idle’ для выхода из режима рисования узлов. Обратите внимание, что Graph исчез.
  • Пометьте бокс ‘Keep showing graph’ для активации режима постоянной видимости графика.

  • Перейдите в Раздел Каналов.
  • Добавьте канал Motion Planning.
  • Создайте ярлык канала ‘AI Character Position’ и подключите его к первому потомственному входу ‘Motion Planning’.
  • Перетяните Motion Planning Info Vector в Граф Каналов и подключите его ко второму потомственному входу канала ‘Motion Planning’.
  • Создайте ярлык канала ‘Motion Planning’ и подключите его к первому потомственному входу канала ‘Motion Planning Info Vector’.
  • Добавьте значение Value и подключите его к третьему потомственному входу ‘Motion Planning’. Смените его значение на ‘0.1’.
  • Создайте ярлык канала ‘3D Graph’ и подключите его к четвертому потомственному входу канала ‘Motion Planning’.
  • Перетяните Matrix Operator в Граф Каналов и подключите его к потомственному входу ‘Look At Matrix’ канала ‘AI Character Motion’. Дважды щелкните по нему и из выпадающего списка выберите ‘Create Translation maxtrix (vector)’ (создать матрицу перемещения). Закройте окно.
  • Подключите канал ‘Motion Planning’ к каналу ‘Create Translation matrix (vector)’. Обратите внимание, что персонаж теперь смотрит на узел под номером ‘0’.
  • Перетяните канал Array Table и создайте таблицу с именем WayPoints (точки пути).
  • Нажмите на закладку менеджера массивов ‘Array Manager’ и нажмите Add column (добавить столбец), назовите его Destination.
  • Нажмите закладку ‘Channel Graph’.
  • Добавьте канал Array Value, в качестве таблицы используйте WayPoints, а в качестве столбца (Column) - ‘Destination’. Подключите канал ко второму потомственному входу ‘Motion Planning Info Vector’.
Смотрите Раздел 3.4 для дополнительной информации
по массивам (arrays).
  • Нажмите на закладку ‘Array Manager’.
  • Создайте дополнительные поля от 1 до 5. Изучите ваш 3D Graph и введите номера нескольких интересных узлов. Точек пути (Waypoints).
  • Нажмите на закладку ‘Channel Graph’.
  • Создайте ярлык для канала ‘Current Destination’ и подключите его к массиву ‘Destination’.

  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу ‘1’. Персонаж должен перейти к узлу, соответствующему полю ‘1’ в массиве. Обратите внимание, что по прибытию персонаж не останавливается автоматически.
  • Переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Создайте ярлык для канала ‘AI Character Position’ и подключите его к первому потомственному входу канала ‘Get Vector’ под каналом ‘Arrival Trigger’.
  • Создайте ярлык канала ‘Motion Planning’ и подключите его ко второму потомственному входу канала ‘Get Vector’.
  • Создайте ярлык канала ‘AI Character Speed’ и подключите его ко второму потомственному входу канала ‘Set Value’.
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажимая клавиши от ‘1’ до ‘5’. Обратите внимание, что персонаж передвигается вперед к соответствующим узлам и останавливается по прибытию.
  • Завершенная версия этого урока содержит дополнительную логику для ограничения движений персонажа. Когда будете готовы, откройте файл и изучите его структуру.

Законченная сцена:

  • ..\Tutorials\3.7 – Pathfinding\Pathfinding – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.1: Logic - Quest3D

Chapter 3.1: Logic

Содержание

  • 1 3.1 Логика
    • 1.1 Оператор Каналов (Channel Caller)
    • 1.2 Если (If)
    • 1.3 Если/Иначе (If Else)
    • 1.4 Триггеры (Triggers)
    • 1.5 Пользовательский Ввод (User Input)
    • 1.6 Переключатели Каналов (Channel Switches)
  • 2 Урок
    • 2.1 Необходимые шаблоны
    • 2.2 Шаг за шагом
    • 2.3 Законченная сцена

3.1 Логика (Logic)

В Quest3D, логика - это основа программы. Логика описывает, что и когда происходит.

Примеры логики:

  • Объект, который отображается, или НЕ отображается на экране.
  • Дверь, открывающася нажатием клавиши.
  • Музыкальная дорожка, проигрываемая при определенном событии.
  • Текущий экран приложения, отталкивающийся от выбора меню.

Ряд каналов Quest3D специально разработан для внесения логики в программу. Наиболее важные из этих логических каналов будут обсуждены в данном разделе.

Оператор Каналов (Channel Caller)

Как гласит название, Channel Caller просто вызывает каналы, связанные с ним. Он используется для добавления структуры в проект. Channel Caller могут быть видны, как разделители, или даже ‘главы’ в программе Quest3D.

Изображение ниже показывает пример структуры программы, разделенной Channel Caller.

Channel Caller должны быть названы правильно и используются часто.

Если (If)

Как и Channel Caller, канал If вызывает своих потомков. Тем не менее, канал If вызывает потомков лишь в случае выполнения определенного условия. Это условие может быть привязано к первому потомственному входу канала If, и должно быть значением (value). Только если значение НЕ ‘0’ (условие истинно, ‘true’), канал, подключенный к If вызывается.

Если/Иначе (If Else)

Канал IfElse подобен каналу If. Если подключенное условие не соблюдается (т.е. значение равно ‘0’), вызывается третий потомственный вход. Если условие соблюдается, вызывается канал, подключенный ко второму потомственному входу.

Триггеры (Triggers)

Каналы Trigger работают подобно каналам If. Trigger также вызывает своих потомков в зависимости от условия.

Существует большая разница между каналами If и Trigger.

Первая, когда условие соблюдено, Trigger запускает своего потомка лишь единожды. Для повторной активации Trigger условие сначала должно стать ложным (false), затем снова истинным (true). Пример: триггер сработал при нажатии пробела. Для его повторного срабатывания, пробел должен быть отпущен и нажат снова.

Вторая разница состоит во вводе для условия. Помимо формы от ‘0’ до ‘1’, также может быть выбрана одна из опций в окне настроек:

Пользовательский Ввод (User Input)

Канал User Input может регистрировать активность со стороны ряда источников, таких, как клавиатура и мышь. В Quest3D, пользовательский ввод выражается одним из трех типов:

  • Двоичное (бинарное) значение ‘0’ или ‘1.0’.

Пример: нажатие клавиши или кнопки мыши.

  • Аналоговое значения от ‘0’ до ‘1.0’.

Пример: движение джойстика.

  • Значение экранных координат.

Пример: движение мыши.

User input может служить значением условия и для канала If(Else) и для Trigger.

Любая клавиша на клавиатуре может быть ‘привязана’ к каналу User Input с помощью окна настроек. После нажатия на кнопку ‘Capture a key to use’ (регистрация используемой клавиши), нажмите кнопку по вашему выбору. Подобным образом могут быть зарегистрированы любые клавиши и движения мыши или джойстика.

Переключатель Каналов (Channel Switches)

Channel Switches позволяет вам выбирать между различными каналами почти любого типа. Channel Switch сначала должен быть выставлен на тот же базовый тип (base type), что и его потомок.

Далее, его первый потомок определяет, какая из подключенных версий используется: значение ‘0’ приводит к тому, что будет использоваться первый вариант, ‘1’ - второй, и т.д.

Урок

Логика в Quest3D определяет строение вашего проекта. Данный урок - это упражнение по структурированию вашей програмы с помощью Channel Caller, и работе с условиями. Условия служат в качестве входных данных для каналов If и Trigger.

После завершения этого урока вы должны получить более полное понимание логики в Quest3D.

Необходимые шаблоны:

  • Scene \ Start 3D Scene
  • Logic \ Channel Caller (x6)
  • Logic \ If
  • Logic \ IfElse
  • Logic \ Trigger
  • Logic \ Channel Switch
  • Logic \ Input \ Keyboard

Шаг за шагом:

  • Перетяните Start 3D Scene в Граф Каналов. Нажмите на него правой клавишей мыши и выберите ‘Set as start channel’ (установить как стартовый канал).
  • Добавьте Channel Caller и подключите его к каналу ‘Start 3D Scene’.
  • Переименуйте Channel Caller в ‘Program’.
  • Перетяните еще пять Channel Caller в Граф Каналов. Переименуйте их все следующим образом: ‘Logic’, ‘User Interface’, ‘3D Scenes’, ‘Scene 1’ и ‘Scene 2’.
  • Подумайте о логической структуре и подключите эти пять Channel Caller к вашей программе.
  • Когда будет готово, изучите структуру каналов на изображении ниже и сравните, похоже ли на него ваше собственное решение.

На данный момент, обе сцены, ‘Scene 1’ и ‘Scene 2’ вызываются. В течение следующих шагов мы добавим логику для отображения первой или второй, в зависимости от ввода с клавиатуры.

  • Разорвите связь между каналами ‘Scene 1’ и ‘3D Scenes’.
  • Добавьте канал If и подключите его ко второму потомственному входу канала ‘3D Scenes’.
  • Подключите канал ‘Scene 1’ ко второму потомственному входу канала ‘if’. Обратите внимание, что канал ‘Scene 1’ не вызывается активно (нет видимой синей линии).
  • Перетяните Value в Граф Каналов и подключите его к первому потомственному входу канала ‘if’ . Это значение Value будет условием для if.
  • Смените значение канала Value на ‘1’. Обратите внимание, что канал ‘Scene 1’ вызывается активно.
  • Верните значение канала Value на ‘0’. Обратите внимание, что канал ‘Scene 1’ больше не вызывается.
  • Выберите канал ‘Value’ и удалите его.
  • Добавьте канал User Input и подключите его к первому потомственному входу канала ‘if’. На данный момент структура каналов должна выглядеть подобно приведенной на изображении ниже.

  • Дважды щелкните по каналу ‘User Input’ чтобы открыть его свойства. Нажмите кнопку определения клавиши ‘Capture a key to use button’ и нажмите клавишу ‘1’ для регистрации. Нажмите кнопку ‘OK’ для подтверждения.
  • Переключитесь в режим Run Mode с помощью кнопки.
  • Зажмите клавишу ‘1’. Обратите внимание, что канал ‘Scene 1’ вызывается.
  • Отпустите кнопку ‘1’. Обратите внимание, что канал ‘Scene 1’ больше не вызывается.
  • Переключитесь в режим Edit Mode.
  • Выберите и удалите канал ‘if’.
  • Выберите и удалите связь между каналами ‘Scene 2’ и ‘3D Scenes’.
  • Перетяните канал IfElse в Граф Каналов и подключите его к каналу ‘3D Scenes’. (выделите и удалите связанные с ним операторы каналов, которые шли с шаблоном)
  • Подключите канал ‘User Input’ к первому потомственному входу канала ‘If Else’.
  • Подключите канал ‘Scene 1’ ко второму потомственному входу канала ‘If Else’. Обратите внимание, что канал ‘Scene 1’ не вызывается.
  • Подключите канал ‘Scene 2’ к третьему потомственному входу канала ‘If Else’. Обратите внимание, что канал ‘Scene 2’ вызывается. Текущая структура каналов должна выглядеть подобно приведенной на изображении ниже.

  • Переключитесь в режим Run Mode.
  • Нажмите клавишу ‘1’. Обратите внимание, что канал ‘Scene 1’ вызывается, а канал ‘Scene 2’ - нет.
  • Отпустите клавишу ‘1’. Обратите внимание, что канал ‘Scene 1’ больше не вызывается, а канал ‘Scene 2’ вызывается.
  • Переключитесь в режим Edit Mode.
  • Добавьте канал Trigger и подключите его к каналу ‘User Interface’.
  • Перетяните канал User Input в Граф Каналов и подключите его к первому потомственному входу канала ‘Trigger’.
  • Добавьте канал Channel Caller и подключите его ко второму потомственному входу канала ‘Trigger’. Переименуйте канал Channel Caller в ‘Event’.
  • Переключитесь в режим Run Mode.
  • Нажмите пробел. Обратите внимание, что канал ‘Event’ вызван единожды.
  • Снова нажмите пробел. Обратите внимание, что канал ‘Event’ снова был вызван единожды.
  • Переключитесь в режим Edit Mode.
  • Выделите и удалите канал ‘User Input’, который подключен к каналу ‘If Else’.
  • Выделите и удалите канал ‘If Else’.
  • Перетяните канал Channel Switch в Граф Каналов и подключите к каналу ‘3D Scenes’.
  • Дважды щелкните по каналу ‘Channel Switch’ для открытия окна свойств. Из списка выберите ‘Channel Caller’ и нажмите кнопку ‘Set’ (установить). Нажмите ‘OK’ для подтверждения.
  • Добавьте канал Value и подключите его к первому потомственному входу канала ‘Channel Switch’. Переименуйте канал Value в ‘Current Scene’ (текущая сцена).
  • Перетяните Channel Caller в Граф Каналов и подключите его ко второму потомственному входу канала ‘Channel Switch’. Переименуйте этот Channel Caller в ‘Menu’. Обратите внимание, что канал ‘Menu’ на данный момент вызывается.
  • Подключите канал ‘Scene 1’ к третьему потомственному входу канала ‘Channel Switch’.
  • Подключите канал ‘Scene 2’ к четвертому потомственному входу канала ‘Channel Switch’.
  • Смените значение ‘Current Scene’ на ‘1’. Обратите внимание, что канал ‘Scene 1’ вызывается.
  • Смените значение канала ‘Current Scene’ на ‘2’. Обратите внимание, что канал ‘Scene 2’ вызывается.

Законченная сцена:

  • ..\Tutorials\3.1 – Logic\Logic – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.2: Math - Quest3D

Chapter 3.2: Math

Содержание

  • 1 3.2 Математика
    • 1.1 Задать Значение (Set Value)
    • 1.2 Значение Выражения (Expression Value)
    • 1.3 Графики (Envelopes)
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

3.2 Математика (Math)

Значения являются сердцем любого проекта Quest3D. Они используются для задания цвета объекта, позиции и размеров, к примеру. Значения также могут описывать очки, настройки программы, опции меню и т.п.

Значения в проекте Quest3D часто меняются. Рядовая математика может быть использована для высчитывания новых значений.

Задать Значение (Set Value)

Следующие положения описывают стандартные положения обычной математики.

Old value (старое значение) = New value (новое значение)

В Quest3D, вышеуказанное утверждение может быть трансформировано в следующее.

Скопировать New value в Old value

Для копирования одного значения в другое используется канал Set Value.

В большинстве случаев канал Set Value нужен лишь для одиночного вызова. Поэтому, он обычно вызывается каналом Trigger.

Значение Выражения (Expression Value)

Математические выражения могут быть описаны в Quest3D с помощью канала Expression Value. Он служит в качестве продвинутого калькулятора. Окно его настроек содержит бокс для фактической формулы и вспомогательный текст, описывающий возможные переменные и операторы. Справочный Материал описывает каждый из этих элементов в более подробных деталях.

Действительное значение Expression Value равняется результату выражения внутри канала. Этот результат также отображается под ‘Current Value’ (текущее значение) в окне настроек.

Скобки ( ) могут быть использованы для задания приоритета одной части выражения над другой. Два выражения на изображении ниже не являются равноценными, а поэтому предоставляют разные результаты.

Значения, подключенные к потомственным входам Expression Value могут быть использованы, как часть выражения в канале. Первый потомок представлен буквой ‘A’, второй - буквой ‘B’ и т.д.

Канал Expression Value может быть назван по его выражению при выборе опции ‘Rename Channel to formula’ (переименовать канал в формулу) в окне настроек.

Следующий пример демонстрирует часто используемую комбинацию каналов Set Value, Expression Value и Value.

На примере ниже, при каждом нажатии пробела к каналу ‘Value’ добавляется ‘1’.

Expression Values также может служить в качестве входного условия для каналов If и Trigger. На изображении ниже, структура читается, как ‘если A равно B, тогда запустить следующие каналы’.

На втором изображении условие ‘A == B’ соблюдено.

Множественные выражения могут быть привязаны друг к другу в одном канале с помощью логических операторов AND ( && ) и OR ( || ).

На изображении выше условие будет соблюдено, если ‘A==1 && B==2’. Выражение нужно читать, как ‘если A равно одному и B равно двум’.

Выражения также могут содержать условия в форме положений If Else. На изображении ниже выражение ‘A==B ? C : D’ читается как ‘если A равно B, тогда результат C, иначе результат D’.

На нижнем изображении условие ‘A==B’ соблюдено. Результатом выражения является значение ‘C’.

Графики (Envelopes)

Кроме немаловажной роли в анимации, графики Envelopes также имеют другие функции.

Графики в канале Envelope представляет двухмерную математическую функцию. Для продвинутых имитаций и моделей формулы могут быть использованы с помощью вставки ряда координатных пар в график. Quest3D позаботится об интерполяции между этими точками.

График на изображении выше показывает формулу ‘y = x²’.

Одно множество может быть преобразовано в другое с помощью Envelope. Иначе говоря, Envelope описывает зависимости между двумя значениями.

Смешивание наборов движений персонажа может быть завязано на скорости перемещения. График на изображении выше увеличивает входное значение скорости с ‘0’ до ‘5.0’ для смешивания выходных значений от ‘0’ до ‘1.0’. График нелинейный.

Envelopes также могут быть использованы для ограничения диапазона значения.

График, приведенный выше, ограничивает выходные значения между ‘-1’ и ‘1’.

Урок

Математика - важный аспект большинства программ Quest3D. Этот урок является упражнением по работе со следующими каналами: Value, Set Value, Expression Value и Envelope.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.2 – Math\Math.cgr

Необходимые шаблоны:

  • Variables \ Value \ Set Value
  • Variables \ Value \ Expression Value
  • Variables \ Value \ Value
  • Variables \ Value \ Envelope
  • Logic \ User Input \ Mouse \ Position \ Mouse Screen X

Шаг за шагом:

  • Откройте сцену, ‘Math.cgr’. Она содержит простую логическую структуру.
  • Перетяните канал Set Value в Граф Каналов и подключите его ко второму потомственному входу Trigger.
  • Добавьте канал Value и подключите его к первому потомственному входу канала ‘Set Value’.
  • Смените значение этого канала Value на ‘1’.
  • Перетяните другой канал Value в Граф Каналов и подключите его ко второму потомственному входу канала ‘Set Value’. Переименуйте этот Value в ‘Current Value’ (текущее значение).

  • Переключитесь в Run Mode.
  • Нажмите пробел. Обратите внимание, что канал ‘Set Value’ запустился единожды. Также обратите внимание, что значение первого канала Value копируется во второй канал Value. Теперь оба равны ‘1’.
  • Переключитесь в Edit Mode.
  • Добавьте канал Expression Value и подключите его к каналу ‘Calculations’.
  • Дважды щелкните на канале ‘Expression Value’ для открытия окна его свойств.
  • В поле ‘Expression’ (выражение), введите ’1’. Обратите внимание, что значение ‘Current Value’ теперь равно ‘1’. А также значение ‘Expression Value’ теперь ‘1’. (подключите значение выражения expression value к оператору каналов channel caller, чтобы он был запущен)

Нажмите ‘OK’ для подтверждения.

  • Перетяните канал Value в Граф Каналов и смените его значение на ‘3’. Подключите его к каналу ‘Expression Value’.
  • Дважды щелкните на канале ‘Expression Value’ для открытия его окна настроек.
  • В поле ‘Expression’ введите ‘A’, имея в виду Value, привязанный как потомок. Обратите внимание, что текущее значение ‘Current Value’ теперь равно ‘3’. Также, значение канала ‘Expression Value’ равно ‘3’.

  • Выберите и удалите канал Value, подключенный к первому потомственному входу канала ‘Set Value’.
  • Добавьте другой канал Expression Value и подключите его к первому потомственному входу канала ‘Set Value’.
  • Подключите канал ‘Current Value’ к каналу ‘Expression Value’.
  • Дважды щелкните на канале ‘Expression Value’ для открытия окна его настроек. В поле выражения ‘Expression’ введите следующую формулу: ‘A + 1’.
  • Выберите опцию ‘Rename Channel to formula’ (переименовать канал по формуле) и нажмите ‘OK’ для подтверждения.

  • Переключитесь в Run Mode.
  • Нажмите пробел. Обратите внимание, что значение канала ‘Current Value’ увеличилось на один (‘1 + 1 = 2’)
  • Еще раз нажмите пробел. Значение увеличилось снова (‘2 + 1 = 3’).
  • Переключитесь в Edit Mode.
  • Смените формулу в Expression Value на ‘A < 4 ? A + 1 : 0’. Эта формула должна быть прочитана, как ‘если A меньше четырех, тогда результат равен A плюс один, иначе результат равен нулю’.
  • Переключитесь в Run Mode.
  • Нажмите пробел. Обратите внимание, что ‘Current Value’ теперь 4.
  • Еще раз нажмите пробел. Обратите внимание, что ‘Current Value’ равен 0.
  • Добавьте канал User Input и подключите его к каналу ‘Calculations’ (вычисления).
  • Дважды щелкните по каналу ‘User Input’ для открытия его окна настроек. Из выпадающего списка выберите ‘Mouse Information’ (информация мыши). Из второго выпадающего списка выберите ‘Mouse Screen Pos X’ (позиция мыши по X координате экрана). Нажмите ‘OK’ для подтверждения.

  • Переключитесь в Run Mode.
  • Поводите мышь слева направо. Обратите внимание, что значение канала ‘User Input’ изменяется. Максимальное значение зависит от разрешения вашего монитора.
  • Переключитесь в Edit Mode.
  • Выберите и удалите соединение между каналами ‘User Input’ и ‘Calculations’.
  • Перетяните канал Envelope в Граф Каналов подключите его к каналу ‘Calculations’.
  • Подключите канал ‘User Input’ к каналу ‘Envelope’.
  • Дважды щелкните по каналу ‘Envelope’ для открытия окна его настроек. Создайте ключи в (0, 0) и (500, 1). Нажмите кнопку ‘All’, чтобы увидеть график целиком.

  • Нажмите ‘OK’ для подтверждения.
  • Переключитесь в Run Mode.
  • Переместите мышь слева направо. Обратите внимание, что канал ‘Envelope’ изменяется от ‘0’ до ‘1.0’.
  • Переключитесь в Edit Mode.

Законченная сцена:

  • ..\Tutorials\3.2 – Math\Math – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.3: For Loop - Quest3D

Chapter 3.3: For Loop

Содержание

  • 1 3.3 Цикл For Loop
    • 1.1 Цикл For Loop
    • 1.2 Обновления в кадре
    • 1.3 Выражения
    • 1.4 Визуализация сцен
    • 1.5 Рисование природы против цикла For Loops
  • 2 Урок
    • 2.1 Необходимые шаблоны
    • 2.2 Шаг за шагом
    • 2.3 Законченная сцена

3.3 Цикл For Loop

Продвинутые интерактивные сцены реального времени могут состоять из сотен элементов. Будучи неэффективно настроенными, такие сцены могут предъявлять слишком высокие требования к графическим картам. Также, управление проектом может выходить из-под контроля. Без правильной структуры, управление таким большим количеством элементов может быть непосильной задачей.

Многие объекты сцены используют те же атрибуты, что и другие объекты. На стадии дизайна проекта рекомендуется определиться, какие объекты могут быть объединены в группы.

Например, рассмотрим приложение, позволяющее пользователю декорировать его или ее виртуальный дом. Различные типы доступного фурнитура могут выглядеть отлично друг от друга, но все они 3D объекты. Более того, пользователь может захотеть переместить, повернуть или отмасштабировать каждый из этих типов и разместить его в виртуальной сцене. Эти атрибуты используются группой ‘мебель’.

Цикл For Loop

Как и многие другие языки программирования, Quest3D использует так называемую функцию ‘For Loop’. Цикл For Loop запускает определенную часть программы необходимое количество раз в каждом кадре. Только когда все ‘повторения’ цикла For Loop будут запущены, програма перейдет к следующей части.

На изображении выше, сначала обрабатывается ‘Part 1’. Далее, 10 раз запускается ‘Part 2’ с помощью функции For Loop. Наконец, программа переходит к ‘Part 3’.

Имитация вождения может потребовать пятьдесят автомобилей в сцене. Вместо того, чтобы иметь пятьдесят отдельных объектов авто, использование For Loop позволяет вам создать единичный объект машины и визуализировать его пятьдесят раз, с отличиями в позиции, форме, цвете и даже управлении.

Обновления в кадре (Updates per frame)

Обычно Quest3D обновляет канал единожды за кадр. Это вызвано причинами производительности и безопасности. Каналы в цикле For Loop должны быть обновлены несколько раз в кадре. Настройки обновления (update) для таких каналов должны быть выставлены на ‘Continuous’ (непрерывное). Опция непрерывного обновления (‘Continuous’) расположена в каждом канале, в окне основных свойств ‘General Properties’.

Каналы, заданные как повторяющиеся (‘Continuous’), могут быть отличены по соответствующему значку.

Потомок ‘Max Iterations’ канала For Loop определяет общее количество запусков подпрограммы. Значение ‘Current Iteration’ (Value) может быть использовано для создания вариаций для различных клонов (instances) в цикле ForLoop. Простым примером может быть варьирование X координаты для клонов объекта (instance).

Выражения (Expressions)

Также может быть использована зависимость между значениями ‘Current Iteration’ и ‘Max Iterations’. На изображении ниже, Expression Value ‘(A+1) / B’ приводит к градиенту от ‘0.2’ до ‘1.0’.

Визуализация сцен (Rendering)

Хорошей практикой является задействование как можно меньшего количества каналов для цикла For Loop. Вместо множественного вызова Render вместе с Camera и Light в каждом кадре, лучше включить в цикл только сами объекты.

На изображении выше, Camera и Light вызываются только раз перед циклом For Loop. Объекты вызываются множество раз, с вариациями на основе значения ‘Current Iteration’ Value. Наконец, Light вызывается еще раз для выключения, таким образом он не влияет на другие визуализаторы (renders).

Рисование природы против циклов For Loops (Nature painting versus For Loops)

Как обсуждалось в Разделе 2.9, рисование природы Nature Painting также разработано для визуализации большого количества 3D объектов в сцене. Nature Painting просчитывается очень быстр благодаря оптимицизации использования аппаратных средств, но конкретно предназначается для статичных элементов. Динамические объекты должны всегда визуализироваться с помощью For Loop.

Урок

Этот урок использует структуру For Loop для визуализации ряда автомобилей на экране.

Необходимые шаблоны:

  • Scene \ Start 3D Scene
  • Logic \ Channel Caller
  • Scene \ Cameras \ Object Inspection Camera
  • Scene \ Light \ Point Light
  • Logic \ For Loop
  • Variables \ Value \ Expression Value (x2)

Шаг за шагом:

  • Начините новый проект.
  • Перетяните Start 3D Scene в Граф Каналов. Нажмите правой клавишей мыши на этом канале ‘Start 3D Scene’ и выберите ‘Set as start channel’.
  • Добавьте Channel Caller и переименуйте его в ‘Scene’. Подключите его к каналу ‘Start 3D Scene’.
  • Перетяните шаблон Object Inspection Camera в Граф Каналов и подключите к каналу ‘Scene’.
  • Закройте окно Animation 3D View, нажав на закладку групп ‘Groups’.
  • Добавьте шаблон Point Light и подключите его к каналу ‘Scene’.
  • Перетяните шаблон ForLoop в Граф Каналов и подключите его к каналу ‘Scene’.
  • Смените значение канала ‘Max Iterations’ на ‘5’.
  • Импортируйте файл Car.x из папки Resource\3D Models\Cars. Выберите все каналы из новой импортированной группы (объект car), скопируйте и вставьте их в группу с For Loop.
  • Создайте ярлык канала Point Light и подключите его к каналу ‘Scene’. Теперь свет будет отключен после визуализации каждого кадра, таким образом он не будет влиять на другие визуализаторы.

  • Перейдите в закладку ‘Animation 3D View’, чтобы изучить текущее положение дел. Обратите внимание, что только одна машина видима.
  • Удалите канал ‘X, R or Value’ вектора позиции ‘Position’.
  • Перетяните Expression Value в шаблон и подключите его к первому (свободному) потомственному входу канала ‘Position’.
  • Создайте ярлык для канала ‘Current Iteration’ и подключите его к каналу ‘Expression Value’.
  • Дважды щелкните по каналу ‘Expression Value’ и введите формулу, ‘A * 3’. Выберите опцию ‘Rename Channel to formula’ и нажмите ‘OK’ для подтверждения.
  • Нажмите правой клавишей мыши на канале ‘A * 3’ и выберите основные настройки ‘General Properties’. В окне настроек выберите опцию ‘Continuous’ (непрерывный). Теперь этот канал будет обновляться множество раз в течение кадра. Нажмите ‘OK’ для подтверждения.
  • Также установите каналы ‘Position’, ‘Motion’ и ‘Car’ на непрерывное обновление ‘Continuous’. Обратите внимание, что все эти каналы должны быть обновлены для каждого клона (instance) в цикле For Loop. Обратите внимание, что после выставления каналов на ‘Continuous’, в Animation 3D View появится пять автомобилей.
  • Переключитесь в Run Mode.
  • Облетите машины и изучите их.
  • Когда будет готово, переключитесь в Edit Mode.
  • Из поверхности машины ‘Car 1’ удалите значение ‘R’ вектора ‘Emissive’. Если у вас нет вектора эмиссии Emsissive, добавьте его из шаблонов.
  • Добавьте Expression Value и переименуйте его в ‘Gradient’. Подключите его к первому (свободному) потомственному входу канала ‘Emissive’. Обратите внимание, что цвета автомобилей изменятся.
  • Создайте ярлык канала ‘Current Iteration’ и подключите его к каналу ‘Gradient’.
  • Создайте ярлык для канала ‘Max Iterations’ и подключите его ко второму потомственному входу канала ‘Gradient’.
  • Установите каналам ‘Gradient’, ‘Emissive’ и ‘Material’ непрерывное обновление ‘Continuous’.
  • Дважды щелкните на канале ‘Gradient’ и введите формулу, ‘(A+1) / B’.

Нажмите ‘OK’ для подтверждения. Обратите внимание, что цвета машин изменились от голубого до светло-серого.

Законченная сцена:

  • ..\Tutorials\3.2 – Advanced logic\Advanced logic – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.5: Multiple channel groups - Quest3D

Chapter 3.5: Multiple channel groups

Содержание

  • 1 3.5 Множественные группы каналов
    • 1.1 Публичные Каналы
    • 1.2 Публичные Каналы Вызова
    • 1.3 Связи между группами каналов
    • 1.4 Настройки Публичного Канала Вызова
    • 1.5 Функции
    • 1.6 Переключатели Каналов
    • 1.7 Цикл For Loop
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

3.5 Множественные группы каналов (Multiple channel groups)

Продвинутые програмы Quest3D могут быть сложными проектами. В определенной точке может оказаться весьма практичным разделение программы на несколько отдельных частей.

Раздел 4.1 по управлению проектом, обсуждает преимущества работы с множественными группами каналов. Этот раздел конкретно объясняет работу в Quest3D.

Множественные группы каналов связываются друг с другом с помощью специальных типов каналов: ‘Public Channel’ (публичный канал) и ‘Public Call Channel’ (публичный канал вызова).

Публичные Каналы (Public Channel)

Public Channel - это каналы, которые могут быть вызваны из внешней группы каналов. Они окрашены красным в Quest3D.

Публичные Каналы Вызова (Public Call Channels)

Public Call Channel связываются с Public Caller (публичный приемник). Они окрашены синим в Quest3D.

Каналы любого базового типа (base type) могут быть сконвертированы в Public Caller. Наиболее часто используемыми типами являются: Channel Caller, Value, Vector, Matrix, 3D Object, Camera и Light. Когда это возможно, используйте Public Caller этих типов для простоты использования и по причинам экономии памяти.

Связи между группами каналов (Linking between channel groups)

Связывание канала с другим каналом в отдельной группе каналов автоматически конвертирует его в Public Channel. Public Call Channel создается в другой группе каналов.

Каналы также могут быть сконвертированы в Public Caller вручную, с помощью контекстного меню, ‘Public Channel Functions > Make Channel Public’. В качестве альтернативы может быть нажата клавиша ‘P’.

Контекстное меню также предоставляет опцию для индивидуального создания Public Call Channels ‘Public Channel Functions > Convert to Public Call Channel’.

Настройки Публичного Канала Вызова (Public Call Channel properties)

С помощью окна настроек канала (Properties) возможно установить Public Channel (того же базового типа), к которому будет привязан Public Call Channel.

Функции (Functions)

Функции - это субпрограммы, которые могут быть вызваны с помощью параметров. Как и Public Caller, в Quest3D они всегда окрашены красным.

Параметры - это данные, используемые, как ввод для функций. В Quest3D они окрашены зеленым.

Каналы могут быть сконвертированы в Параметры (Parameters) вручную, с помощью ‘Public Channel Functions > Convert to Parameter Channel’ из контекстного меню.

Публичные Каналы (Public Channels) с потомками в виде Параметров (Parameter) становятся Каналами Публичного Вызова (Public Call Channels) с потомственными входами соответствующего типа.

Функции могут быть вызваны так часто, как это необходимо. Каждая ссылка (instance) может быть укомполетована другим параметром, таким образом создавая вариации.

Переключатели Каналов (Channel Switch)

Функции типа Channel Switch должны включать дополнительный канал Value перед тем, как параметр сможет быть подключенным к потомственному входу ‘Selector’. Это связано с природой канала Channel Switch.

Цикл For Loop

Функции также могут быть вызваны с помощью структуры цикла For Loop. Могут быть подключены массивы (arrays) в качестве параметров для создания еще более мощных структур.

Изображение выше показывает продвинутую функцию персонажа с параметрами для его движения, текущей анимации и текстуры. Изображение ниже показывает функцию, когда персонаж вызывается, как Public Call Channel (канал публичного обращения). Он использует массивы в цикле For Loop в качестве параметров.

Урок

Необходимая сцена Quest3D:

  • ..\Tutorials\3.5 – Multiple channel groups\Multiple channel groups.cgr
  • ..\Tutorials\3.5 – Multiple channel groups\3D scene render.cgr
  • ..\Tutorials\3.5 – Multiple channel groups\Car.cgr

Необходимые шаблоны:

  • Variables \ Value \ Value

Шаг за шагом:

  • Откройте сцену ‘Multiple channel groups.cgr’. Она содержит структуру простого проекта.
  • Из меню приложения выберите ‘File > Import...’. Найдите файл ‘3D scene render.cgr’ в папке, указанной выше и нажмите ‘Open’ для подтверждения. В качестве пулового имени используйте ‘3D scene render’. Файл содержит простую сцену, включающую каналы Render, Camera и Light.
  • Нажмите на закладку ‘Groups’.
  • Из закладки ‘Groups’, перетяните пуловое имя ‘Multiple channel groups’ в верхний Граф Каналов.
  • Из закладки ‘Groups’, перетяните пуловое имя ‘3D scene render’ в нижний Граф Каналов.
  • Подключите канал ‘3D Scene Render’ в нижнем Графе Каналов к каналу ‘3D Scene’ в верхнем Графе Каналов. Обратите внимание, что канал ‘3D Scene Render’ в нижнем Графе Каналов стал красным, а каналы ниже вызываются активно (имеют голубую окантовку). Обратите внимание, что в верхнем Графе Каналов был создан синий канал, подключенный к каналу ‘3D Scene’.

  • Импортируйте файл ‘Car.cgr’ из директории, указанной выше. В качестве пулового имени используйте ‘Car’. Файл содержит модель автомобиля.
  • Из закладки ‘Groups’, перетяните пуловое имя ‘3D scene render’ в верхний Граф Каналов.
  • Из закладки ‘Groups’, перетяните пуловое имя ‘Car’ в нижний Граф Каналов.
  • Подключите канал ‘Car’ в нижнем Графе Каналов к каналу ‘Render’ в верхнем Графе Каналов.
  • Нажмите на закладку ‘Animation 3D View’. Заметьте, что модель авто отображается в окне предварительного просмотра.
  • Нажмите правой клавишей мыши на канале ‘Current Car Texture’ в нижнем Графе Каналов и выберите из контекстного меню ‘Public Channel Functions > Convert to Parameter Channel’ (преобразовать в параметрический канал). Обратите внимание, что канал стал зеленым. Также заметьте, что синий канал Public Call Channel ‘Car: Car -> Car’ в верхнем Графе Каналов теперь обладает потомственным входом типа Value.
  • Перетяните Value в верхний Граф Каналов и переименуйте его в ‘Current Car Texture’ (текущая текстура машины). Подключите его к синему каналу ‘Car: Car -> Car’.
  • Смените значение канала ‘Current Car Texture’ на ‘1’. Обратите внимание, что текстура модели автомобиля в Animation 3D View изменилась.

Законченная сцена:

  • ..\Tutorials\3.5 – Multiple channel groups\Multiple channel groups – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.6: Mathematical operators - Quest3D

Chapter 3.6: Mathematical operators

Содержание

  • 1 3.6 Математические операторы
    • 1.1 Матрица и Движение
    • 1.2 Операторы
    • 1.3 Родственные связи
    • 1.4 Посмотреть на
    • 1.5 Реакция Коллизии
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходимые шаблоны
    • 2.7 Шаг за шагом
    • 2.8 Законченная сцена

3.6 Математические операторы (Mathematical operators)

В виртуальном мире 3D объекты могут быть перемещены, повернуты или отмасштабированы благодаря применению принципов линейной алгебры. Этот раздел хотя и предназначен для достаточно продвинутых пользователей Quest3D, является ознакомительным. Для дополнительной информации, пожалуйста, обратитесь к большому количеству литературы, написанной по данному предмету.

Матрицы и Движения (Matrix and Motion)

Как описывалось в Разделе 2.1, 3D объекты в Quest3D хранят свою позицию, ориентацию и масштаб в каналах Matrix или Motion. Канал Motion разбит на три вектора (Vector), а каждый вектор разбит на три значения (Values).

Операторы (Operators)

В Quest3D так называемые каналы операторов (Operator) позволяют вам влиять на все эти элементы динамически, в реальном времени.

В качестве основного правила, базовые каналы операторов (Operator) в Quest3D наследуются типом результата. Например, если результатом операции должно быть значение (Value), оператор будет найден в базовом канале Value Operator.

Большинство функций базового канала Value Operator используется для получения информации от других (типов) каналов. Примером часто используемого Value Operator является ‘Get distance (vector, vector)’ (получение значения дистанции из вектора).

Базовый канал Vector Operator также может быть использован для получения информации из других (типов) каналов. Например, ‘Get Translation (position) from Matrix’ (получить перемещение, позицию, из матрицы).

Vector Operator также использоваться для векторной трансформации. Трансформация может включать простое сложение, вычитание, умножение и деление двух векторов. Несомненно, Vector Operator могут быть использованы для задания длины вектора, или умножения вектора на значение или матрицу.

Matrix Operator могут быть использованы для превращения векторов в матрицы, типа ‘Create Translation Matrix’ (создать матрицу перемещения). Matrix Operator также могут хранить информацию, такую, как ‘Get Current Camera Matrix’ (получить текущую матрицу камеры). ‘Matrix Interpolate’ (интеполяция матрицы) может быть использована для смешивания двух матриц.

Специальным типом оператора является ‘Damping’, существующий для значений Values, Vector и Matrices. Он изменяет значение во времени, эффективно 'переливая' его из текущего значения в новое. Эффект логарифмический, и его скорость может быть изменена с помощью второго потомственного входа Value. Скорость этого дампинга ранжируется от ‘0’ до ‘1.0’.

Обратите внимание, что оператор ‘Value Damping’
является отдельным каналом.

Родственные связи (Parenting)

Обычно, движения всех 3D объектов в сцене зависят от центра мировых координат (0, 0, 0). Тем не менее, существует возможность привязать одни объекты к другим. Объект, привязанный к другому объекту, называется потомком, или дочерним объектом. Объект, к которому привязан первый объект, называется родительским.

Привязывание одного объекта к другому в Quest3D выполняется с помощью подключения канала Motion родителя к потомственному входу ‘Parent Matrix’ канала Motion дочернего объекта.

Движение дочернего объекта после этого более не зависит от мировых координат. Вместо этого он зависит от движения своего родительского объекта.

На изображении выше позиция и ориентация светлого куба зависит от мирового центра. На изображении ниже светлый куб привязан к темному. Позиция и ориентация светлого куба зависит от темного.

Посмотреть на (Look At)

Четвертый потомственный вход канала Motion называется ‘Look At Matrix’ (матрица цели взгляда). Объект может быть нацелен в направлении другого объекта с помощью подключения канала Motion цели к ‘Look At Matrix’. Перемещение первого объекта по локальной оси Z будет перемещать его вперед или назад от объекта ‘Look At’.

Примеры включают в себя камеру, следующую за машиной и персонажа бегущего к своей цели.

Реакция Коллизии (Collision Response)

Канал Fast Collision Response (быстрая реакция коллизии) - это система для имитации коллизии между объектами. Она проверяет сфероид в его текущей позиции сравнивая с любым количеством объектов коллизии Collision Object, и приводит к новой позиции.

Структура канала Fast Collision Response состоит из ряда элементов.

Раздел 4.2 описывает более продвинутую форму решения коллизий, называемую ‘ODE’ (Open Dynamics Engine).

Урок

Следующее упражнение добавляет вращающееся колесо движещемуся автомобилю, демонстрируя концепцию родителя и потомка. Функция матрицы Look At показана с помощью объекта камеры.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.6 – Mathematical operators\Mathematical operators 1.cgr

Необходимые шаблоны:

  • Variables \ Value \ Expression Value (x2)
  • Scene \ Render Camera Light

Шаг за шагом:

  • Откройте сцену ‘Mathematical operators 1.cgr’. Она содержит анимированную машину, свободное колесо и модель камеры. Обратите внимание, что свободное колесо расположено в (0, 0, 0).
  • Создайте ярлык канала ‘Car Motion’. Подключите его к потомственному входу ‘Parent Matrix’ канала ‘Front Left Wheel Motion’. Обратите внимание, что объект колеса уже не расположен в (0, 0, 0). Он в той же позиции, что и модель машины.
  • Перейдите в Раздел Анимации.
  • Нажмите на кнопку камеры редактора Editor Camera для просмотра сцены с помощью камеры редактора Quest3D.
  • Нажмите на объект ‘Front Left Wheel’ в списке, чтобы выделить его.
  • Настройте позицию ‘Front Left Wheel’, управляя им с помощью манипуляторов. В качестве альтернативы, вы можете ввести следующие координаты X,Y,Z: (-0.78, 0.32, 1.13).

  • Перейдите в Раздел Каналов.
  • Перетяните Expression Value в Граф Каналов и подключите его к каналу ‘Front Left Wheel Pitch’.
  • Дважды щелкните по Expression Value и введите следующую формулу: ‘OLD - 0.5 * TC’. Нажмите ‘OK’ для подтверждения. Обратите внимание, что объект колеса теперь поворачивается.
  • Создайте три ярлыка Expression Value и подключите их к каналам ‘Front Right Wheel Pitch’, ‘Rear Left Wheel Pitch’ и ‘Rear Right Wheel Pitch’ соответственно. Обратите внимание, что теперь вращаются все четыре колеса.
  • Создайте ярлык ‘Car Motion’. Подключите его к потомственному входу ‘Look At Matrix’ канала ‘Camera Object Motion’. Обратите внимание, что 3D модель камеры теперь направлена на машину.
  • Перейдите в Раздел Анимации.
  • Из выпадающего списка выбора таймеров Timer Selection, выберите таймер ‘Car Animation’. Установите значение таймера на 200 для проигрывания полной анимации.
  • Нажмите кнопку Play. Обратите внимание, что машина начала ездить по дороге. Заметьте, что модель камеры продолжает смотреть на машину.
  • Нажмите кнопку Project Camera. Сцена теперь будет отображаться с позиции Follow Camera.

Законченная сцена:

  • ..\Tutorials\3.6 – Mathematical operators\Mathematical operators 1 – Complete.cgr

Если вы хотите, вы можете сохранить текущую группу каналов в вашу папку проектов. Следующие шаги будут связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.6 – Mathematical operators\Mathematical operators 2.cgr

Необходимые шаблоны:

  • Variables \ Value \ Expression Value (x3)
  • Logic \ User Input \ User Input (x4)
  • Variables \ Value \ Value (x2)
  • Variables \ Vector \ Vector Operator (x2)
  • Variables \ Matrix \ Matrix Operator
  • Variables \ Vector \ Vector (using values)

Шаг за шагом:

  • Откройте сцену ‘Mathematical operators 2.cgr’. Она содержит сцену городского блока и растянутый сферический коллизионный объект.
  • Выберите и удалите значение ‘Z’ канала ‘Movement Vector’.
  • Добавьте Expession Value и подключите его к (теперь пустому) третьему потомственному входу канала ‘Movement Vector’.
  • Перетяните два канала User Input в Граф Каналов и подключите их оба к Expression Value. Привяжите к ним клавиши со стрелкой вверх и стрелкой вниз, соответственно. Переименуйте их в ‘Arrow Up’ и ‘Arrow Down’, соответственно.
  • Добавьте канал Value и подключите его к Expression Value. Переименуйте Value в ‘Movement Speed’ (скорость движения). Дважды щелкните по каналу и смените его значение на ‘1’.
  • Дважды щелкните по Expression Value и введите следующую формулу:

(A – B) * C * (TC / 25)

A - это канал ‘Arrow Up’, B - ‘Arrow Down’, а C - это ‘Movement Speed’. TC - это Tick Count (количество отметок), а фактор ‘25’ подсчитан для 25 кадров в секунду.

  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу вверх. Обратите внимание, что вид камер перемещается вперед.
  • Нажмите клавишу со стрелкой вниз, чтобы двигаться назад.
  • Подвигайте мышь влево и вправо. Обратите внимание, как это отразилось на обзорном виде.
  • Нажмите клавишу вверх и вместе с этим поводите мышь влево-вправо. Обратите внимание, что вы движетесь вперед и вращаетесь одновременно. Также заметьте, что движение вперед - это не то направление, куда нацелена камера.
  • Переключитесь в Edit Mode.
  • Отключите ‘Movement Vector’ от канала ‘Fast Collision Response’.
  • Добавьте канал Vector Operator и подключите его к каналу ‘Fast Collision Response’. Дважды щелкните по нему и из выпадающего списка выберите ‘Multiply Matrix with Vector (vector, matrix)’ (умножить матрицу на вектор). Закройте окно и переименуйте канал на ‘Adjust Heading’ (регулировка поворотов).
  • Подключите ‘Movement Vector’ к каналу ‘Adjust Heading’.
  • Перетяните канал Matrix Operator в Граф Каналов. Дважды щелкните по нему и из выпадающего списка выберите ‘Get Rotation Matrix from Matrix (matrix)’ (получить матрицу вращения из матрицы). Закройте окно и переименуйте канал в ‘Get Rotation’ (получить вращение).
  • Сделайте ярлык ‘Motion’ и подключите его к каналу ‘Get Rotation’.
  • Подключите канал ‘Adjust Heading’ к каналу ‘Motion’.

  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав на клавишу вверх и клавишу влево одновременно. Обратите внимание, что вид камеры движется вперед и по направлению, в которое указывает камера.
  • Переключитесь в Edit Mode.
  • Смените значение ‘Y’ Value канала ‘Position’ на 2. Обратите внимание, что камера скользит в воздухе. Следующие шаги добавят коллизию и гравитацию модели.
  • Отключите ‘Adjust Heading’ от канала ‘Fast Collision Response’.
  • Добавьте канал Vector Operator. Дважды щелкните по нему и из выпадающего списка выберите ‘Add Two Vectors (vector, vector)’ (добавить два вектора). Закройте окно и переименуйте канал в ‘Add Vectors’.
  • Подключите ‘Adjust Heading’ к каналу ‘Add Vectors’.
  • Подключите канал ‘Add Vectors’ к каналу ‘FastCollisionResponse’.
  • Перетяните шаблон Vector with Values (вектор со значениями) в Граф Каналов и подключите его к каналу ‘Add Vectors’. Переименуйте канал Vector в ‘Gravity Vector’.
  • Выберите и удалите значение ‘Y’ Value канала ‘Gravity Vector’.
  • Добавьте Expression Value и подключите его к (теперь пустому) второму потомственному входу канала ‘Gravity Vector’. Дважды щелкните по нему и введите следующую формулу:

-0.4 * TC

Обратите внимание, что камера упала на землю.

  • Повторно протестируйте гравитацию, изменив значение ‘Y’ Value канала ‘Position Vector’ снова на 2. Обратите внимание, что камера снова упала на землю.
  • Протестируйте сцену, походив по ней. Обратите внимание, что камера движется в том направлении, в которое она указывает, и удерживается на земле с помощью гравитации.

Законченная сцена:

  • ..\Tutorials\3.6 – Mathematical operators\Mathematical operators 2 – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 3.8: Finite State Machine - Quest3D

Chapter 3.8: Finite State Machine

Содержание

  • 1 3.8 Finite state machine
    • 1.1 Граф Finite State Machine
    • 1.2 Соединение объектов положений
    • 1.3 Иерархия
    • 1.4 Временные изменения положений
    • 1.5 Примеры
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые каналы
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена

3.8 Машина итоговых положений (Finite state machine)

Проекты могут состоять из ряда подпрограмм, таких, как различные экраны меню и 3D сцены. Используя различные каналы логики Quest3D, достаточно просто переключаться между подобными экранами до тех пор, пока структура проста.

Для упрощения переключения между подпрограммами в более сложных структурах, может быть использован канал Finite State Machine. В вышеупомянутом примере, различные экраны меню могут считаться положениями (‘states’).

Finite State Machine для краткости называется ‘FSM’.

Канал Finite State Machine имеет ряд потомственных входов. Значения, подключаемые к первому потомственному входу призваны запускать изменения положения. Потомки второго потомственного входа представляют фактические положения. Вызывается только текущее положение. Наконец, потомки третьего потомственного входа могут быть запущены при особом изменении состояния положения.

Граф Машины Итоговых Положений (Finite State Machine Graph)

Окно настроек Finite State Machine выглядит подобно Графу Каналов.

Различные положения FSM представлены синими кругами. Текущее положение подсвечивается. В правой части экрана отображаются настройки выбранного объекта положения.

Выпадающий список ‘Channel to call on state’ (вызов канала при положении) содержит имена всех каналов, подключенных к потомственным входам ‘State Call Channels’ (вызываемые каналы положения) в FSM.

Соединение объектов положений (Connecting state items)

Объекты положений могут быть подключены друг к другу с помощью перетягивания линии от одного черного центра к другому. В правой части экрана показаны настройки выделенной связи положений.

Выпадающий список ‘Value channel to trigger transition’ (канал значения для запуска перехода) содержит имена всех каналов, подключенных к потомсвенным входам ‘State Change Value’ (значение изменения положения) в FSM.

Выпадающий список ‘Channel to trigger on state change’ (запускаемый канал при изменении положения) содержит имена всех каналов, подключенных к потомственным входам ‘State trigger channels’ (каналы изменения положений) в FSM.

Иерархия (Hierarchy)

На изображении ниже, текущее положение - ‘Main Menu’. Могут быть доступны только положения ‘3D Scene’ и ‘Options Menu 1’. Плюс, положение ‘Options Menu 2’, которое может быть доступно только из положения ‘Options Menu 1’. Тем не менее, положение ‘Options Menu 2’ имеет доступ к положениям ‘Options Menu 1’ и ‘Main Menu’.

Временные изменения положений (Time based state changes)

Также существует возможность создания положений, зависящих от времени. Эта функция дает пользователю некоторое время (в милисекундах), перед тем, как перейти к следующему положению.

Примеры (Examples)

Другими примерами, при которых может быть использована Finite State Machine включают уровни в создании тренеровочных программ, продвинутая анимация персонажей и поведение персонажей с искуственным интеллектом (A.I.).

Урок

Следующий урок показывает работу Finite State Machine. Машина используется для создания структуры меню.

Необходимая сцена Quest3D:

  • ..\Tutorials\3.8 – Finite State Machine\Finite State Machine.cgr

Необходимые каналы:

  • Logic \ Finite State Machine

Шаг за шагом:

  • Откройте файл ‘Finite State Machine.cgr’. Он содержит экран главного меню и экран меню опций. Он также содержит две очень простые 3D сцены, одна с красной сферой, другая с синим кубом.
  • Перетяните канал Finite State Machine в Граф Каналов и подключите его к каналу ‘Program’. Обратите внимание, что его текущее значение, или ‘положение’, равно ‘0’.
  • Подключите канал ‘Main Menu’ к потомственному входу ‘State Call Channels’ канала ‘Finite State Machine’. Обратите внимание, что канал ‘Main Menu’ не вызывается, так как пока не была задана логика положения. Также обратите внимание, что новый потомственный вход ‘State Call Channel’ добавлен к Finite State Machine, позволяя подключение дополнительных каналов этого типа.
  • Подключите канал ‘Options Menu’ ко второму (пустому) потомственному входу ‘State Call Channel’ в FSM. Обратите внимание, что он пока не вызывается.
  • Подключите ярлык канала ‘Main Menu – Options Menu Button Pressed’ к потомственному входу ‘State Change Values’ канала ‘Finite State Machine’. Обратите внимание, что новый потомственный вход ‘State Change Values’ был добавлен к FSM, позволяя подключение дополнительных каналов этого типа.
  • Подключите ярлк канала ‘Options Menu – Main Menu Button Pressed’ ко второму (пустому) потомственному входу ‘State Change Values’ в Finite State Machine.

  • Дважды щелкните по каналу ‘Finite State Machine’ для открытия окна его настроек. Обратие внимание на область подобную Графу Каналов слева и опции справа.
  • Нажмите кнопку ‘New Item’ (новый элемент) и нажмите один раз в центре графа FSM. Обратите внимание, что был создан круговой объект.
  • Нажмите на объект, чтобы выделить его. Обратите внимание на его настройки, отображенные в правой части окна. Смените его имя ‘Item name’ на ‘Main Menu’.

Из выпадающего списка ‘Channel to call on state’ (канал вызываемый при положении), выберите ‘Main Menu’. Обратите внимание, что канал ‘Main Menu’ теперь вызывается, а экран главного меню отображается в окне обзорного вида Animation 3D View.

Обратите внимание, что опции в этом списке соответствуют каналам, подключенным к потомственным входам ‘State Call Channels’ (каналы вызова положения) в FSM.

  • Создайте новый объект выше ‘Main Menu’ и выберите его. Смените имя ‘Item name’ на ‘Options Menu’. Из выпадающего списка ‘Channel to call on state’, выберите ‘Options Menu’.
  • Соедините два объекта, перетянув связь от черного центра ‘Main Menu’ до черного центра объекта ‘Options Menu’. Обратите внимание на направление стрелки.
  • Нажмите на связь, чтобы выделить ее. Обратите внимание на ее настройки, отображенные в правой части окна.

Из выпадающего списка ‘Value channel to trigger transition’, выберите ‘Main Menu – Options Button Pressed’ (Главное меню - кнопка опций нажата). Обратите внимание, что значение Value с тем же именем в Графе Каналов теперь вызывается. Обратите внимание, что опции в списке соответствуют каналам, подключенным к потомственным входам ‘State Change Values’ (смена значений положения) в FSM.

  • Перетяните связь от объекта ‘Options Menu’ назад к ‘Main Menu’. Выберите связь и из выпадающего списка ‘Value channel to trigger transition’ (значение канала для запуска перехода) выберите ‘Options Menu – Main Menu Button Pressed’ (меню опций - кнопка главного меню нажата).

  • Закройте окно настроек Finite State Machine.
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Нажмите на кнопку ‘Options’ в окне обзорного вида Animation 3D View. Обратите внимание, что меню опций отобразилось на экране.
  • Нажмите кнопку ‘Main Menu’ для возврата в главное меню.
  • Еще раз нажмите кнопку ‘Options’ для вывода меню опций на экран.
  • Переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Дважды щелкните по каналу Finite State Machine для открытия его окна настроек. Обратите внимание, что текущее положение, ‘Options Menu’, теперь подсвечено.
  • Закройте окно настроек FSM. В Графе Каналов, обратите внимание, что значение Finite State Machine теперь равно ‘1’.

Заметьте, что канал ‘Options Menu’ вызывается, а канал ‘Main Menu’ нет. Обратите внимание, что значение ‘Options Menu – Main Menu Button Pressed’ подсвечено, а ‘Main Menu – Options Button Pressed’ - нет.

  • Подключите канал ‘Scene Selection Menu’ к третьему (пустому) потомственному входу ‘State Call Channels’ канала FSM.
  • Подключите канал ‘Main Menu –Start Button Pressed’ к третьему (пустому) потомственному входу ‘State Change Value’ канала FSM.
  • Подключите канал ‘Scene Selection Menu – Main Menu Button Pressed’ к четвертому (пустому) потомственному входу ‘State Change Value’ канала FSM.
  • Откройте окно настроек FSM.
  • Добавьте новый объект, ‘Scene Selection Menu’. Установите его на вызов (call) канала ‘Scene Selection Menu’.
  • Подключите объект ‘Main Menu’ к объекту ‘Scene Selection Menu’ и установите его на правильную смену значения.
  • Подключите объект ‘Scene Selection Menu’ к объекту ‘Main Menu’ и установите его на правильную смену значения.
  • Закройте окно настроек FSM.
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену, нажав на созданные функциональные кнопки.
  • Когда будете готовы, переключитесь в Edit Mode.
  • Создайте логику Finite State Machine для двух 3D сцен. Все необходимые каналы уже присутствуют в Графе Каналов, их только нужно правильно привязать.

Законченная сцена:

  • ..\Tutorials\3.8 – Finite State Machine\Finite State Machine – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 4.2: Physics simulation - Quest3D

Chapter 4.2: Physics simulation

Содержание

  • 1 4.2 Имитация физики
    • 1.1 ODE
    • 1.2 Каналы
    • 1.3 Формы ODE
    • 1.4 Полигональные формы
    • 1.5 Настройки ODE
    • 1.6 Соединения ODE
      • 1.6.1 * Шар и гнездо
      • 1.6.2 * Петля
      • 1.6.3 * Слайдер
      • 1.6.4 * Петля2
    • 1.7 Правила для суставов ODE
    • 1.8 Команды ODE
    • 1.9 Информация об ODE
  • 2 Уроки
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходимые шаблоны
    • 2.7 Шаг за шагом
    • 2.8 Законченная сцена

4.2 Имитация физики (Physics simulation)

Один из недостатков традиционной анимации заключается в том, что она предопределена. Основанная на времени анимация может быть воспроизведена, но она никогда не будет реагировать на изменения окружающей среды, к примеру.

В качестве альтернативы предварительно подготовленной анимации, физический движок реального времени может имитировать движения и поведение реального мира. Позиция и ориентация постоянно просчитываются, отталкиваясь от ряда атрибутов, таких, как форма, масса и трение. Внешние силы, такие, как гравитация и коллизия с другими формами также влияют на движения объекта.

ODE

Quest3D поддерживает Открытый Динамический Движок ‘Open Dynamics Engine’ (ODE). Имитация физики в Quest3D настраивается довольно просто, и часто создает великолепный, убедительный результат.

Каналы

Канал ODE Body - это сердце любого проекта, использующего динамику. Он заменяет обычную структуру канала Motion объекта.

Первый потомственный вход канала ODE Body - начало движения, находящегося в покое, перед тем, как запущена имитация физики. Значение ‘0’ или ‘1’, привязанное ко второму потомственному входу, соответственно, активирует или деактивирует имитацию. Динамика реального времени должна быть включено или выключена пообъектно. Шаблон Toggle/FlipFlop может быть использован для простого переключения.

Формы ODE (ODE Shapes)

Объекты ODE могут иметь одну из четырех имитационных форм: Куб (Box), Сфера (Sphere), Плоскость (Plane) и Полигональный Объект (Polygon Object). Из них только Куб и Сфера действительно являются динамическими. Плоскость и Полигональный Объект могут быть использованы только как статичные коллизионные объекты, такие, как части окружения.

Сложные динамические формы могут быть сымитированы с помощью сочетания нескольких Кубов и/или Сфер друг с другом.

Полигональные формы (Polygon shapes)

Форма ODE типа Polygon Object должна иметь объект коллизии, привязанный к ее третьему потомственному входу.

Настройки ODE (ODE Properties)

Окно настроек канала ODE Body включает в себя ряд атрибутов.

Настройки для всех каналов ODE Body могут быть также доступны в Разделе Анимации, в закладке динамики ‘Dynamics’. Атрибуты ODE могут быть отредактированы только когда имитация выключена.

Полное описание различных настроек может быть найдено в Справочном Материале (нажмите F1 в Quest3D, чтобы получить доступ к нему). Три шаблона ODE объектов, которыми укомплектован Quest3D, представляют два обычно используемых набора настроек: Stable ODE Body, Slippery ODE Body и ODE Landscape.

Соединения ODE (ODE Joints)

Мощной возможностью ODE является функциональность его соединений. Каналы ODE Joint могут быть использованы для соединения нескольких ODE форм. Только формы Box и Sphere могут быть частью соединения, Plane и Polygon Object не могут.

В Quest3D поддерживаются четыре типа соединений.

* Шар и гнездо (Ball and socket)

Это соединение может быть использовано для имитации лампы, висящей на потолке.

* Петля (Hinge)

Это соединение может быть использовано для имитации дверных петель.

* Слайдер (Slider)

Это соединение может быть использовано для имитации поршня или скользящей двери.

* Петля2 (Hinge2)

Это соединение может быть использовано для имитации соединения колес машины, включая рессоры. Ось 1 (Axis 1) используется для управления, Ось 2 (Axis 2) - для движения.

Правила для соединений ODE Joints

При работе с соединениями, учитывайте следующие пункты:

  • Два тела, связанные соединением, не могут коллизировать друг с другом.
  • Два тела не могут быть связаны друг с другом более чем одним соединением. Множество соединений между одними и теми же формами будут противоречить друг другу, приведя к нестабильной имитации.
  • Свобода движения может быть ограничена для определенных типов соединения. Например, слайдовое соединение не может вращаться вокруг своей оси.

Команды ODE (ODE Commands)

Канал ODE Command может быть использован для смены ряда настроек имитации, включая точность, скорость, гравитацию и трение. Канал ODE Command может также быть использован для динамического применения сил к телам. Эти силы могут быть абсолютными в мировом пространстве (например, ветер), или зависимыми от тела (ракетные двигатели, к примеру).

Информация ODE

ODE Info Value может быть использован для получения информации, такой, как силы, скорость и углы поворота соединений.

Урок

Целью этого упражнения является получение опыта по использованию физической имитации в Quest3D. В первой сцене, создается система ходящей камеры ODE. Второй урок создает управляемую машину.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.2 – Physics simulation\Physics simulation 1.cgr

Необходимые шаблоны:

  • Physics \ ODE Body
  • Objects \ Collision \ Collision Object
  • Logic \ Triggers \ Toggle Value
  • Objects \ Null Object
  • Physics \ ODE Command

Шаг за шагом:

  • Откройте файл ‘Physics simulation 1.cgr’. Он содержит окружение, несколько кубов, сферу и камеру.
  • Отключите канал ‘Sphere Motion’ от канала ‘Sphere’.
  • Перетяните канал ODE Body в Граф Каналов и подключите его к первому потомственному входу канала ‘Sphere’. Переименуйте ODE Body в ‘ODE Sphere’.
  • Дважды щелкните по каналу ‘ODE Sphere’ для открытия окна его настроек. Из выпадающего списка форм ‘Shape’, выберите опцию ‘Sphere’ (сфера). Нажмите ‘OK’ для подтверждения.
  • В окне настроек ODESphere, установите ‘Roughness’ (грубость) на 50, ‘Angular Velocity Damping’ (дампинг угловой скорости) на 0.1 и ‘Sphere Radius’ (радиус сферы) на 0.5.

Нажмите ‘OK’ для подтверждения.

  • Дважды щелкните по каналу ‘ODE Environment’ для открытия окна его настроек. Из выпадающего списка формы ‘Shape’, выберите опцию ‘Polygon Object’ (полигональный объект). Нажмите ‘OK’ для подтверждения.
  • Перетяните канал Collision Object в Граф Каналов и подключите его к потомственному входу ‘Collision Object’ канала ‘ODE Environment’.
  • Создайте ярлык канала ‘Environment’ и подключите его к Collision Object.
  • Дважды щелкните по каналу ‘Collision Object’ для открытия окна его настроек. Нажмите кнопку ‘Create Tree’ (создать древо) для запуска канала, нажмите ‘OK’ для подтверждения.
  • Подключите 'Toggle/FlipFlop' к потомственному входу ‘Enable Body’ канала ‘ODE Sphere’.
  • Создайте ярлык канала ‘Toggle/FlipFlop’ и подключите его к потомственному входу ‘Enable Body’ канала ‘ODE Environment’.
  • Подключите ‘Sphere Motion’ к потомственному входу ‘Start Motion’ канала ‘ODE Sphere’.
  • Перетяните Null Object в Граф Каналов и переименуйте его в ‘ODE Sphere Placer’.
  • Выберите и удалите папку ‘Motion’, подключенную к каналу ‘ODE Sphere Placer’.
  • Подключите канал ‘Sphere Motion’ к каналу ‘ODE Sphere Placer’.

  • Перейдите в Раздел Анимации.
  • Переключитесь в режим Run / Edit Mode.
  • Нажмите на объект ‘ODE Sphere Placer’ в списке, в левой части экрана, чтобы выбрать его. Переместите объект на расстояние нескольких метров над землей. Обратите внимание, что объект ‘Sphere’ перемещается вместе с ним.
  • Протестируйте сцену на данный момент, нажав пробел. Обратите внимание, что сфера упала на землю.
  • Еще раз нажмите пробел, чтобы остановить имитацию физики. Обратите внимание, что сфера была выставлена на свою стартовую позицию.
  • Переместите объект ‘ODE Sphere Placer’ в точку прямо над землей, на плоской части пола.
  • Переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Создайте ярлык канала ‘ODE Sphere’ и подключите его к каналу ‘Get Movement from Matrix’. Эта операция привязывает камеру к вектору позиции объекта Sphere.
  • Добавьте канал ODE Command и подключите его к каналу ‘Forces’. Дважды щелкните по каналу для открытия окна его настроек. Из выпадающего списка выберите опцию ‘Add Force (ODE Body, vector)’. Выберите ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘ODE Sphere’ и подключите его к первому потомственному входу канала ‘Add Force (ODE Body, vector)’.
  • Подключите канал ‘Force Vector’ ко второму потомственному входу канала ‘Add Force (ODE Body, vector)’. Обратите внимание, что ‘Force Vector’ состоит из ключевых входящих каналов и корректируется поворотом камеры (heading).
  • Перейдите в Раздел Анимации.
  • Убедитесь, что сцена отображается в окне Animation 3D View с помощью проектной камеры Project Camera.
  • Переключитесь в Run Mode.
  • Нажмите пробел для запуска имитации.
  • Погуляйте вокруг, с помощью клавиш со стрелками вверх и вниз и мыши. Поднимитесь под уклоном и обратите внимание на скольжение назад. Проедьте через коробки и обратите внимание, что они раздвинулись по сторонам.
  • Нажмите пробел дважды для остановки и сброса имитации.
  • Когда будете готовы, переключитесь в Edit Mode.

Законченная сцена:

  • ..\Tutorials\ 4.2 – Physics simulation\Physics simulation 1 – Complete.cgr

Если вы хотите, вы можете сохранить текущуюю группу каналов в вашу папку проектов. Следующие шаги будут связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.2 – Physics simulation\Physics simulation 2.cgr

Необходимые шаблоны:

  • Physics \ ODE Joint

Шаг за шагом:

  • Откройте файл ‘Physics simulation 2.cgr’. Он содержит окружение, машину и четыре отдельных колеса. Каждый из этих объектов уже настроен как ODE тело.
  • Перетяните канал ODE Joint в Граф Каналов и подключите его к каналу ‘ODE Joints’. Переименуйте ODE Joint в ‘ODE Joint Front Left’. Дважды щелкните по нему для открытия его окна настроек. Выберите ‘Hinge2’ в качестве типа соединения (Joint type). Выберите опцию ‘Enable motor’ (разрешить мотор), и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык для канала ‘ODE Car’ и соедините его с потомственным входом ‘ODE Body 1’ канала ‘ODE Joint Front Left’ (переднее левое ODE соединение).
  • Создайте ярлык канала ‘ODE Wheel Front Left’ (переднее левое ODE колесо) и подключите его к потомственному входу ‘ODE Body 2’ канала ‘ODE Joint Front Left’.
  • Подключите канал ‘ODE Car Movement’ к потомственному входу ‘Velocity’ канала ‘ODE Joint Front Left’.
  • Подключите канал ‘ODE Car Steering’ к потомственному входу ‘Velocity2/Rotation (Hinge2)’ канала ‘ODE Joint Front Left’.
  • Создайте ярлык канала ‘Car Motion’ и подключите его к потомственному входу ‘Parent Matrix’ (родительская матрица) канала ‘ODE Joint Front Left’. Текущая структура каналов на данный момент должна выглядеть подобно приведенной на изображении ниже.

  • Перейдите в Раздел Анимации.
  • Нажмите на закладку ‘ODE’.
  • Выберите ‘ODE Joint Front Left’. Переместите центр соединения в центр переднего левого колеса. Настройка должна выглядеть подобно приведенной на изображении ниже. Обратите внимание, что три других колеса уже расположены правильно.

  • Переключитесь в Run / Edit Mode.
  • Нажмите пробел для запуска имитации физики. Обратите внимание, что машина упала на землю.
  • Покатайтесь на машине, используя клавиши со стрелками. Обратите внимание, что поведение колес действует убедительно.
  • Когда будете готовы, переключитесь в Edit Mode.

Законченная сцена:

  • ..\Tutorials\ 4.2 – Physics simulation\Physics simulation 2 – Complete.cg

Перевел Ovod, 2008

Назад


Chapter 4.3: Database connectivity - Quest3D

Chapter 4.3: Database connectivity

Содержание

  • 1 4.3 Подключение баз данных
    • 1.1 Запросы
    • 1.2 Параметры запросов
    • 1.3 Хранение данных в Quest3D
    • 1.4 ODBC
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходиме шаблоны
    • 2.7 Шаг за шагом
    • 2.8 Законченная сцена

4.3 Подключение баз данных (Database connectivity)

Quest3D предлагает два типа подключения баз данных. Первый, встроенный, MySQL, второй - ODBC 3.0. Эти два типа подключения представляют собой большую часть существующих технологий баз данных.

Обратите внимание, что подключение баз данных
доступно только в редакциях Quest3D Power и
VR Editions.

В центре функциональности базы данных в Quest3D лежит подключение к внешней базе данных. Каналы DB Driver MySQL и DB Driver ODBC используются для настройки подключения, с помощью их соответствующих протоколов.

Канал DB Source представляет само подключение.

Запросы (Queries)

После того, как подключение драйвера MySQL было установлено, канал DB Query используется для извлечения и хранения данных. В его окне настроек должен быть указан источник DB Source и запросу должно быть задано имя. Сам по себе запрос (query) может быть введен в диалоговом окне или подключен как текстовый канал Text к первому потомственному входу канала DB Query.

Параметры запросов (Query parameters)

Второй потомственный вход канала DB Query, ‘Input’, может быть использован для добавления запросу параметров. Первый потомок ‘Input’ обозначается, как ‘$$1$$’, второй, как ‘$$2$$’ и так далее.

Примеры часто используемых команд MySQL включают:

  • SELECT [column] FROM [table] WHERE [condition]
  • INSERT INTO [table] ([column1, column2]) VALUES [“value1”, “value2”])
  • UPDATE [table] SET [column=”value”] WHERE [condition]

Пожалуйста, обратитесь к официальной документации MySQL за дополнительной информацией по командам синтаксису запросов.

Хранение данных в Quest3D

Результаты запросов могут храниться в каналах типа DB Value или DB Text. Окно настроек этих двух типов каналов позволяет вам выбрать запрос и поле. Потомственные входы этих каналов могут быть использованы для задания номера ряда и столбца.

Используя структуру For Loop существует возможность извлечения набора данных и, например, сохранять их в отдельных рядах канала Array соответствующего типа.

ODBC

ODBC в Quest3D работает подобно подключениям MySQL, за исключением того, что подключение выполняется с помощью драйвера, а не напрямую к базе данных. Драйвер ODBC выставлен на подключение к dBase, MS Excel и MQIS файлам, а также к базам данных MS Access.

Пожалуйста, обратитесь к официальной документации ODBC для дополнительной информации по командам и синтаксису запросов.

Урок

Следующие шаги образуют упражнение по подключению удаленной базы данных MySQL с помощью каналов Quest3D. Второй пример добавляет функциональность массива (array).

Примечание: для этого урока вам понадобится
доступ к локальному или удаленному серверу
MySQL. Следующие шаги операются на базу
данных под названием ‘quest3d’, содержащую
тублицу под названием ‘player’, со столбцами
для ‘id’, ‘name’ и ‘type’. Для лучших
результатов, таблица должна содержать три
или большее количество записей. Можете
свободно использовать редактирование этих
данных для своих личных ситуаций.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.3 – Database connectivity\Datase connectivity 1.cgr

Необходимые шаблоны:

  • Enterprise \ Database \ DB Driver MySQL
  • Variables \ Text \ Text (x3)
  • Power \ Database \ DB Source
  • Power \ Database \ DB Info Value
  • Power \ Database \ DB Query
  • Power \ Database \ DB Text
  • Variables \ Value \ Value

Шаг за шагом:

  • Откройте файл ‘Database connectivity 1.cgr’. Он содержит простую логическую структуру.
  • Перетяните канал DB Driver MySQL в Граф Каналов.
  • Добавьте канал Text и подключите его к потомственному входу ‘Host’ канала ‘DB Driver MySQL’. Переименуйте канал Text в ‘Host’. Дважды щелкните по каналу и смените текст на ‘127.0.0.1’. Это ‘localhost’ IP адрес. Если вы обладаете доступом к удаленной базе данных, используйте вместо этого ее IP. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Перетяните другой канал Text в Граф Каналов и подключите его к потомственному входу ‘Database’ канала ‘DB DriverMySQL’. Переименуйте этот канал Text в ‘Database’. Дважды щелкните по каналу и измените текст на ‘example’. Это имя базы данных на удаленном вебсервере Quest3D. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Добавьте другой канал Text и подключите его к потомственному входу ‘Username’ канала ‘DB DriverMySQL’. Переименуйте канал Text в ‘User name’. Дважды щелкните по каналу и измените текст на ‘root’. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Если сервер требует пароль, добавьте другой канал Text и подключите его к потомственному входу ‘Password’. Смените текст на пароль.
  • Перетяните канал DB Source в Граф Каналов. Дважды щелкните по каналу для вывода окна его настроек. В качестве имени в Quest3D (‘Name in Quest3D’), воспользуйтесь ‘MySQL’ и выберите опцию ‘Rename channel’ (переименовать канал). Нажмите ‘OK’ для подтверждения.
  • Подключите канал ‘DB DriverMySQL’ к каналу ‘DB Source’.
  • Добавьте DB Info Value и подключите его к ‘Database’ Channel Caller. Дважды щелкните по каналу DB Info Value чтобы открыть окно его настроек. Из выпадающего списка выберите опцию ‘Database Connected’ (база данных подключена). Из второго выпадающего списка выберите ‘MySQL’. Обратите внимание, что это имя подключения, указанное в канале DB Source. Нажмите ‘OK’ для подтверждения.
  • Подключите канал ‘MySQL’ к каналу ‘One Time’.
  • Дважды щелкните по каналу ‘One Time’ для вывода его окна. Нажмите кнопку ‘Reset’ для вызова потомков канала. Через некоторое время значение канала DB Info Value должно смениться на ‘1’. Закройте окно настроек канала ‘One Time’.
  • Перетяните канал DB Query в Граф Каналов и подключите его к каналу ‘Retrieve Data’. Дважды щелкните по каналу ‘DB Query’ для открытия окна его настроек.

Из выпадающего списка выберите ‘MySQL’. В качестве наименования запроса ‘Name of this query’, используйте ‘Get Player Info’. В качестве фактического запроса ‘Actual query’, используйте

SELECT * FROM player

Это извлечет все данные из таблицы ‘player’. Нажмите кнопку ‘Execute’ (запустить), затем кнопку ‘Results’ (результаты). Появится окно, показывающее результаты запроса. Нажмите ‘Close’, затем ‘OK’ для подтверждения.

  • Добавьте канал DB Text и подключите его к каналу ‘Text Out’. Дважды щелкните по каналу DB Text для открытия окна его настроек. Выберите поле ‘name’ запроса ‘Get Player Info’. Выберите опцию ‘Rename channel’ (переименовать канал) и нажмите ‘OK’ для подтверждения. Обратите внимание, что имя отображается на экране в обзорном окне Animation 3D View.
  • Перетяните канал Value в Граф Каналов и подключите его к первому потомственному входу канала DB Text. Переименуйте Value в ‘Index’.

  • Смените значение канала ‘Index’ на ‘1’ для запроса второй записи в столбце ‘name’. Обратите внимание, что вместе с этим изменится имя на экране.

Законченная сцена:

  • ..\Tutorials\4.3 – Database connectivity\Datase connectivity 1 – Complete.cgr

Если хотите, можете сохранить текущую группу каналов в вашу папку проектов. Следующие шаги связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.3 – Database connectivity\Datase connectivity 2.cgr

Необходимые шаблоны:

  • Variables \ Text \ Array Text (x2)

Шаг за шагом:

  • Откройте файл ‘Database connectivity 2.cgr’. Он содержит логику подключения базы данных, подобную примеру выше.
  • Перетяните канал Array Text в Граф Каналов и подключите его ко второму потомственному входу канала ‘Set Name Text’. Дважды щелкните по каналу ‘Array Text’ для открытия окна его настроек. Из выпадающего списка таблицы ‘Table’, выберите ‘Player’. Из выпадающего списка столбца ‘Column’, выберите ‘Name’. Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Нажмите правой клавишей мыши на канале ‘Player: Name’ и из меню выберите ‘General Properties’ (основные настройки). Установите ‘Update’ (обновление) на ‘Continuous’ (непрерывное) и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘Current Row’ (текущий ряд) и подключите его как индексное значение (index value) к каналу ‘Player: name’.
  • Переключтесь в Run Mode.
  • Нажмите ‘F2’ для импорта базы данных в Quest3D.
  • Переключитесь в Edit Mode.
  • Нажмите закладку ‘Array Manager’ (менеджер массивов) и выберите таблицу ‘Player’. Обратите внимание, что столбец ‘Name’ заполнен именами из соответствующего столбца внешней базы данных.
  • Нажмите закладку ‘Channel Graph’.
  • Добавьте другой канал Array Text и подключите его к первому (пустому) потомственному входу ‘Input’ канала ‘Set Player Name’. Задайте массив как ссылку (reference) столбца ‘Name’ в таблице ‘Player’ и переименуйте его соответственно.
  • Нажмите правой клавишей мыши на канал ‘Player: Name’ и из меню выберите ‘General Properties’. Установите ‘Update’ на ‘Continous’ и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘Current Row’ этого цикла For Loop, и подключите его как индексное значение к каналу ‘Player: Name’, который вы только что создали.
  • Дважды щелкните по каналу ‘Set Player Name’. Введите следующий запрос:

UPDATE player SET name="$$1$$" WHERE id="$$2$$"

Это заменит все записи в столбце ‘name’ таблицы ‘player’ в удаленной базе данных. Столбец ‘id’ используется как первичный индекс. Обратите внимание, что ‘$$1$$’ ссылается на второй потомственный вход канала ‘Set Player Name’. ‘$$2$$’ ссылается на третий потомственный вход. Нажмите ‘OK’ для подтверждения.

  • Нажмите закладку ‘Array Manager’.
  • Измените одно из имен столбца ‘Name’ в таблице ‘Player’. Обратите внимание, что имя изменилось в правом столбце на экране в окне Animation 3D View, но не в левом.
  • Переключитесь в режим Run Mode.
  • Нажмите клавишу ‘F3’ для обновления удаленной базы данных с учетом данных массива Quest3D.
  • Нажмите клавишу ‘F2’ для повторного импорта данных из удаленной базы данных в Quest3D. Обратите внимание, что левый столбец на экране в окне Animation 3D View был обновлен.
  • Переключитесь в Edit Mode.
  • Дважды щелкните по каналу ‘Insert Player Name’ (вставить имя игрока). Введите следующий запрос:

INSERT player SET name="$$1$$"

Это добавит новую запись в таблице ‘player’ удаленной базы данных. Обратите внимание, что ‘$$1$$’ ссылается на второй потомственный вход канала ‘Insert Data’. Нажмите ‘OK’ для подтверждения.

  • Переключитесь в Run Mode.
  • Нажмите ‘F4’ для вставки новой записи в удаленную базу данных.
  • Нажмите ‘F2’ для повторного импорта данных из удаленной базы данных в Quest3D. Обратите внимание, что и левый и правый столбец в окне Animation 3D View были обновлены.

Законченная сцена:

  • ..\Tutorials\4.3 – Database connectivity\Datase connectivity 2 – Complete.cgr

Перевел Ovod, 2008

Назад


Chapter 4.4: Networking - Quest3D

Chapter 4.4: Networking

Содержание

  • 1 4.4 Организация сети
    • 1.1 Подача протокола
    • 1.2 Инициализация
    • 1.3 Передача данных
    • 1.4 Буферы
    • 1.5 Сетевые действия
    • 1.6 Сетевая информация
    • 1.7 Сетевые триггеры
  • 2 Урок
    • 2.1 Необходимая сцена Quest3D
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходимые шаблоны
    • 2.7 Шаг за шагом
    • 2.8 Законченная сцена

4.4 Организация сети (Networking)

Некоторые приложения должны быть разработаны более, чем для одного пользователя. Примерами могут быть виртуальные чатовые комнаты, командные тренеровочные симуляторы и сетевые многопользовательские игры. Каждый пользователь должен запустить экземпляр приложения. Каждый экземпляр непрерывно должен передавать свое текущее состояние. Сетевая функциональность используется для связи между компьютерами.

Обратите внимание, что сетевые функции доступны
только в редакциях Quest3D Power и VR Editions.

В большинстве случаев один из компьютеров в сети становится ‘сервером’ (‘server’). Другие компьютеры называются ‘клиентами’ (‘clients’).

Сервер контролирует любую передачу данных. Он получает обновления от клиента и отправляет данные каждому из клиентов. Сервер отправляет данные только тогда, когда клиент их запрашивает.

Сетевые приложения Quest3D настраиваются, как обычные ‘однопользовательские проекты’. Клиенты воспроизводят большую часть приложения локально. Только те данные, которые связаны с другими пользователями, запрашиваются через сервер по сети. Примерами могут быть позиция пользователя, внешность аватара и текст в окнах чата.

Обратите внимание, что PC клиента не обязан иметь Quest3D (редактор) установленным. Клиенты могут запускать откомпилированные версии самостоятельных ‘.exe’ файлов или ‘.q3d’ файлов просмотрщика.

Обычно, компьютер сервера сам же является и клиентом. В другом случае, такой компьюетр называется ‘dedicated server’ (выделенный сервер).

Скорость передачи ограничивается и сервером и клиентом. Quest3D поддерживает сетевые приложения для вплоть до 32 пользователей. Большее количество пользователей технически возможно, но может привести к снижению производительности.

Подача протокола (Logging in)

Клиент должен подать серверу протокол (‘log in’). Сервер выбирается из списка запущенных сетевых приложений в локальной сетевой области (local area network (‘LAN’)), или по определенном интернет-адресу (номер IP). Создание или обновление таких списков доступных сетевых программ называется 'подсчетом' (‘enumerating’).

Каждое сетевое приложение обладает уникальным ID для гарантии протокола клиента для правильной программы.

Инициализация (Initialisation)

После процедуры подачи протокола (log-in), программа клиента инициализируется. Это может влючать настройку стартовой позиции, изменение внешнего вида и настройка роли или типа персонажа. Вдобавок, ‘контроль’ над подобными атрибутами должен быть назначен вновь запротоколированному клиенту. Пользовательский контроль над элементами сцены может быть распространен при динамическом изменении назначений.

Передача данных (Data transfer)

Сетевые данные могут быть переданы в Quest3D с помощью каналов Network Value, Network Matrix, Network Text и Network Buffer. Первые три типа вставляются между родителем и его потомком.

Network Value, Network Matrix и Network Text могут быть переданы и получены группами. Вдобавок, может быть задана гарантированность передачи, для уверенности в том, что данные действительно отправились по назначению. Эта опция немного медленнее, чем обычная передача. Наконец, Network Value и Network Matrix могут быть выставлены на непрерывное движение (‘Continuous’), приводя к более сглаженной анимации.

Буферы (Buffers)

Каналы других типов могут быть переданы по сети с помощью канала Network Buffer. Он должен быть вызван независимо, а распространяемый канал может быть привязан как его потомок.

Сетевые действия (Network actions)

Канал Network Actions содержит ряд функций, таких, как создание и удаление сервера, отключение клиента и настройку управления пользователя. Он также содержит ряд тригеров для таких событий, как создание сервера, протоколирование клиента и отказ в соединении.

Сетевая информация (Network information)

Канал Network Info Value содержит ряд функций, таких, как статус соединения, номер текущего пользователя и общее количество подключенных клиентов.

Канал Network Info Text хранит имена сессии и компьютеров.

Сетевые триггеры (Network triggers)

Network Triggers может быть запущен для гарантии запуска события на всех клиентах. Обычные триггеры могут быть слишком неточными для сетевых целей.

Урок

Сетевая функциональность позволяет связь между двумя или более компьютерами. Сетевые проекты в Quest3D настраиваются как ‘однопользовательские’ программы. Обычно они содержат код для сервера и клиента.

Следующее упражнение демонстрирует создание подключения к серверу в Quest3D. Второй урок - продвинутый случай, показывающий пользовательский контроль над переменными.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.4 – Networking\Networking 1.cgr

Необходимые шаблоны:

  • Power \ Network \ Network Actions (x3)
  • Logic \ Expression Value
  • Power \ Network \ Network Info Value

Шаг за шагом:

  • Откройте файл, ‘Networking 1.cgr’. Он содержит простую логическую структуру.
  • Перетяните канал Network Actions в Граф Каналов и подключите его к каналу ‘Create Server Trigger’. Дважды щелкните по каналу ‘Network Actions’ для открытия окна его настроек. Из выпадающего списка в окне настроек, выберите ‘Create Server’ (создать сервер). Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Добавьте другой канал Network Actions и подключите его к каналу ‘Create Server’. Установите и переименуйте канал Network Actions на/в ‘This PC created a server’ (этот компьютер создал сервер).
  • Перетяните другой канал Network Actions в Граф Каналов и подключите его к каналу ‘Network Logic’. Установите и переименуйте этот канал Network Actions на/в ‘Connect to own server’ (подключиться к имеющемуся серверу).
  • Подключите несвязанный канал ‘MessageBox’ к каналу ‘This PC created a server’.

  • Добавьте Expression Value и подключите его к каналу ‘Player Connected?’.
  • Перетяните канал Network Info Value в Граф Каналов и подключите его к Expression Value, который вы только что добавили. Дважды щелкните по Network Info Value, установите и переименуйте его на/в ‘Connection Status’ (статус подключения).
  • Дважды щелкните по Expression Value и смените его формулу на ‘A==9’. Выберите опцию ‘Rename Channel to formula’ (переименовать канал в формулу) и нажмите ‘OK’ для подтверждения. Обратите внимание, что статус подключения, равный ‘9’, означает, что подключение было установлено.

  • Переключитесь в Run Mode.
  • Нажмите ‘F2’. Обратите внимание, что через некоторое время сервер будет создан и запущено подключение ‘Connect to own server’. Также заметьте, что несколько мгновений позже на экране появится сообщение ‘A player connected’ (игрок подключен).
  • Переключитесь в Edit Mode.

Законченная сцена:

  • ..\Tutorials\4.4 – Networking\Networking 1 – Complete.cgr

Если вы хотите, вы можете сохранить текущую группу каналов в вашу папку проектов. Следующие шаги будут связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.4 – Networking\Networking 2.cgr

Необходимые шаблоны:

  • Variables \ Arrays \ Array Channel
  • Power \ Network \ Network Matrix

Шаг за шагом:

  • Откройте файл ‘..\Tutorials\Networking 2.cgr’. Он содержит окружение, персонаж и камеру ходьбы от 3го лица, а также сетевую логику.
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Нажмите ‘F2’ для создания сервера. Обратите внимание, что через некоторое время отобразится 3D сцена. Это означает, что сервер был создан и подключение клиента установлено.
  • Протестируйте сцену, прогулявшись по ней.
  • Когда будете готовы, переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Отключите соединение между каналом ‘Animated Character’ и каналом ‘Character Motion’.
  • Добавьте Array Channel. Из выпадающего списка выберите таблицу ‘Characters’ (персонажи). Из второго списка выберите столбец ‘Character Motion Network’ (сетевые движения персонажа). Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Добавьте канал Network Matrix и подключите его к каналу массива ‘Characters: Character Motion Network’.
  • Подключите канал ‘Character Motion’ к каналу ‘Network Matrix’.
  • Создайте ярлык канала ‘Current Iteration’ и подключите его к первому потомственному входу канала массива ‘Characters: Character Motion Network’.

  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, походите по ней с помощью клавиш со стрелками и мыши. Нажмите клавиши от ‘1’ до ‘3’ для управления текстурами.
Следующая часть урока требует второй компьютер,
который будет работать, как клиент. Два
компьютера должны быть подключены через
локальную сеть.
  • Из меню File выберите ‘Save As’. Сохраните данный проект в вашу папку проектов.
  • Из меню File выберите ‘Publish’. Опубликуйте проект как самостоятельный файл ‘.exe’.
  • Скопируйте файл ‘.exe’ на компьютер клиента.
  • Запустите файл ‘.exe’ на компьютере клиента.
  • На главном компьютере нажмите ‘F4’ для входа, как клиента. Обратите внимание, через некоторое время отобразится 3D сцена.
  • На компьютере клиента протестируйте сцену, походите по ней с помощью клавиш со стрелками. На компьютере сервера обратите внимание, что персонаж клиента прогуливается по округе.
  • На компьютере сервера нажмите клавиши от ‘1’ до ‘4’ для смены внешнего вида персонажа сервера. Обратите внимание, что изменения отражаются в реальном времени на компьютере клиента.

Законченная сцена:

  • ..\Tutorials\4.4 – Networking\Networking 2 – Complete.cgr
  • ..\Tutorials\4.4 – Networking\Networking 2 – Complete.exe

Перевел Ovod, 2008

Назад


Chapter 4.5: Lua scripting - Quest3D

Chapter 4.5: Lua scripting

Содержание

  • 1 4.5 Lua скриптинг
    • 1.1 Функции Lua
    • 1.2 Переменные
    • 1.3 Групповые функции
    • 1.4 Потомки
    • 1.5 Цикл For Loop
    • 1.6 Загрузка группы
  • 2 Урок
    • 2.1 Необходимые шаблоны
    • 2.2 Шаг за шагом
    • 2.3 Законченная сцена
    • 2.4 Необходимые шаблоны Quest3D
    • 2.5 Шаг за шагом
    • 2.6 Законченная сцена
  • 3 Смотрите также

4.5 Lua скриптинг (Lua scripting)

Каналы Quest3D - это строительные блоки, содержащие предварительно скомпилированный код C++ и DirectX. Весь набор каналов предоставляет функциональность для многих аспектов разработки 3D реального времени.

Несмотря на открытую и логичную структуру системы каналов, определенная функциональность может быть управляема более эффективно с помощью скриптового языка. Quest3D поддерживает Lua, бесплатную скриптовую среду от стороннего производителя.

Lua в Quest3D особенно применяем в таких случаях, как загрузка и выгрузка групп каналов, сложных просчетов и повторяющихся структур (циклов ‘for loop’).

Скрипт канала Lua отображается в окне настроек:

Функции Lua (Lua functions)

Каналы Lua могут иметь одну из двух функций, или обе.

Первая, ‘CallChannel’, и запускается она просто когда вызывается канал.

Вторая - ‘GetValue’, и запускается она, когда канал Lua используется, как значение (value). Фактическое значение канала Lua равно значению, которое ‘возвращает’ скрипт в конце функции.

Переменные (Variables)

Так же, как и в других скриптовых языках и языках программирования, переменные, используемые в скрипте Lua должны быть ‘объявлены’. Это утверждение выделяет память для переменной. Слово локальная (‘local’) означает, что переменная используется только в одном конкретном месте, в данном случае, в канале Lua. Как только скрипт будет выполнен, память будет очищена снова.

local variable

Вы также можете присвоить значение переменной во время ее объявления.

local variable = 1

Вычисления работают аналогично другим языкам программирования.

variable = variable + 1

Group functions

Quest3D поддерживает следующие стандартные групповые функции Lua: ‘base’, ‘string’ и ‘math’. Вдобавок, существует группа ‘q’, содержащая особые функции Quest3D.

Два примера функций:

local variable = math.cos(value)

local variable = q.GetTick()

Первый пример просчитывает косинус значения между скобками. Второй получает количество отметок (Tick Count) из Quest3D Lua группы ‘q’.

Потомки (Children)

Любое количество потомков любого типа может быть подключено к каналу Lua.

Доступ к потомкам в скрипте Lua может быть получен с помощью соответствующей функции. Как обычно, сначала они должны быть объявлены. Утверждение ниже получает доступ к первому потомку, присоединенному к каналу Lua (в позиции ‘0’).

local variable = channel.GetChild(0)

Потомки могут быть вызваны с помощью следующих утверждений:

local variable = channel.GetChild(0)

variable:CallChannel()

Обратите внимание на разницу в использовании встроенных и локальных структур. Для встроенных структур, таких, как ‘channel’, функция предваряется ‘.’ (точкой). Для локальных структур, таких, как переменные, функция предваряется ‘:’ (двоеточием).

Фактическое значение канала Value, подключенного к каналу Lua может быть получено с помощью следующих команд.

local variable = channel.GetChild(0)

local value = variable:GetValue()

Текст также может быть извлечен с помощью утверждения ниже.

local variable = channel.GetChild(0)

local text = variable:GetText()

Значение или текст потомка может быть задан с помощью следующих команд:

variable:SetValue(value)

variable:SetText(text)

Цикл For Loop

Повторяющиеся структуры, подобные ‘For Loop’ в Quest3D, могут быть написаны с помощью следующего утверждения:

while i < max do i = i + 1 end

Загрузка групп (Group loading)

Особенно полезны функции по загрузке и выгрузке групп каналов. Утверждения следующие:

q.LoadChannelGroup("group.cgr", "PoolName", instance) q.RemoveChannelGroup("PoolName", instance)

Эти команды делают управление группами в Quest3D очень простым.

Больше информации по Lua в целом может быть
найдено на официальном вебсайте:
http://www.lua.org

Урок

Lua существенно расширяет ‘комплектную’ функциональность набора каналов Quest3D. Следующее упражнение нацелено на ознакомление вас с внутренней работой канала Lua и его двух главных функций : ‘CallChannel’ и ‘GetValue’.

Второй урок детализирует более продвинутое использование Lua в Quest3D: динамическую загрузку.

Необходимые шаблоны:

  • Logic \ Empty Lua Script (x2)
  • Logic \ Channel Caller.
  • Variables \ Value \ Value (x2)
  • Logic \ User Input \ User Input

Шаг за шагом:

  • Начните новый проект Quest3D, выбрав ‘New Project’ из меню File.
  • Перетяните канал Lua в Граф Каналов. Обратите внимание, что он автоматически установлен стартовым каналом (Start Channel). Дважды щелкните по нему для открытия его окна настроек. Обратите внимание, что окно уже содержит скрипт для двух функций.
  • В функции ‘GetValue’, объявите новую переменную, введя следующий код:
local currentvalue = 1
  • Установите значение канала Lua на значение переменной, заменив следующую строку:
return -1
на
return currentvalue
  • Нажмите кнопку ‘CallValue’ для запуска функции ‘GetValue’. Обратите внимание, что фактическое значение канала Lua сменилось на ‘1’.

  • Добавьте канал Channel Caller и переименуйте его в ‘Project Start’. Задайте его как стартовый канал (Start Channel).
  • Добавьте канал Value и подключите его к каналу ‘Project Start’.
  • Подключите канал Lua к Value. Теперь канал Lua вызывается каждый кадр, как значение. Другими словами, функция ‘GetValue’ скрипта Lua теперь запускается каждый кадр. Или: значение переменной ‘currentvalue’ (текущее значение) просчитывается и ‘возвращается’ каждый кадр.
  • Смените скрипт на следующее:
function GetValue()
local currentvalue = 1
currentvalue = currentvalue + 1
return currentvalue
end

Нажмите ‘OK’ для подтверждения. Обратите внимание, что значение канала Lua сейчас ‘2’.

  • Перетяните другой канал Value в Граф Каналов и подключите его к каналу Lua. Смените его значение на ‘3’.
  • Получите доступ к потомку, сменив скрипт Lua на следующее:
function GetValue()
local child0 = channel.GetChild(0)
local currentvalue  = child0:GetValue()
return currentvalue
end

Нажмите ‘OK’ для подтверждения. Обратите внимание, что значение канала Lua теперь то же, что и значение его потомка: ‘3’.

  • Добавьте другой канал Value и подключите его ко второму потомственному входу канала Lua. Смените его значение на ‘4’.
  • Измените скрипт так, чтобы он возвращал сумму значений его двух потомков. Возможно множество решений. Одно из них приведено ниже:
function GetValue()
local child0 = channel.GetChild(0)
local value0  = child0:GetValue()
local child1 = channel.GetChild(1)
local value1  = child1:GetValue()
local sum = value0 + value1
return sum
end

Нажмите ‘OK’ для подтверждения. Обратите внимание, что значение канала Lua сейчас равно ‘7’, сумме значений двух его потомков.

Также обратите внимание, что для простых вычислений, проще использовать канал Expression Value.

  • Перетяните другой канал Lua в Граф Каналов и подключите его к каналу ‘Project Start’.
  • Добавьте канал User Input и подключите его к каналу Lua.
  • Перетяните Channel Caller в Граф Каналов и подключите его ко второму потомственному входу канала Lua.
  • Добавьте другой Channel Caller и подключите его к первому Channel Caller.
  • Смените скрипт для функции ‘CallChannel’ так, чтобы она вызывала второго потомка только когда значение первого равняется ‘1’. Это должно выглядеть подобно коду, приведенному ниже.
function CallChannel()
local child0 = channel.GetChild(0)
local userinput = child0:GetValue()
local child1 = channel.GetChild(1)
if userinput == 1 then
child1:CallChannel()
end
end

Нажмите ‘OK’ для подтверждения. Обратите внимание, что Channel Caller активен. Это благодаря утверждению ‘GetChild’ в скрипте.

  • Переключитесь в Run Mode.
  • Протестируйте скрипт с помощью зажатия пробела. Обратите внимание, что пока пробел нажат, второй Channel Caller также вызывается. Отпустите пробел. Обратите внимание, что Channel Caller больше не вызывается.

Также заметьте, что для простого вызова каналов по условию в Quest3D легче использовать канал If.

Законченная сцена:

  • ..\Tutorials\4.5 – Lua Scripting\Lua scripting 1 – Complete.cgr

Если вы хотите, вы можете сохранить текущую группу каналов в вашу папку проектов. Следующие шаги будут связаны с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\4.5 – Lua Scripting\Lua scripting 2.cgr

Шаг за шагом:

  • Откройте файл ‘Lua Scripting 2.cgr’. Он содержит простую логическую структуру. Обратите внимание на синий публичный канал вызова Public Call Channel. Он отображает ошибку, ‘Not Found’ (не найдено). Это правильно.
  • Дважды щелкните по каналу ‘Lua: Load Group’ для открытия его настроек. Введите следующи код:
function CallChannel()
q.LoadChannelGroup (“Environment.cgr”, “Environment”, 0)
end

Этот скрипт загружает группу каналов ‘Environment.cgr’ в пул, ‘Environment’. Ноль отображает количество дублей. Нажмите ‘OK’ для подтверждения.

  • Переключитесь в Run Mode.
  • Нажмите пробел для загрузки определенной группы. Обратите внимание, что окружение отобразилось в обзорном виде Animation 3D View.
  • Переключитесь в Edit Mode.
  • Добавьте линию для загрузки группы ‘Character.cgr’ в пул ‘Character’.
function CallChannel()
q.LoadChannelGroup (“Environment.cgr”, “Environment”, 0)
q.LoadChannelGroup (“Character.cgr”, “Character”, 0)
end
  • Переключитесь в Run Mode.
  • Нажмите пробел для загрузки обеих указанных групп. Обратите внимание, что персонаж пока не отображается в обзорном виде Animation 3D View. Это потому, что он пока не был вызван.
  • Переключитесь в Edit Mode.
  • Нажмите на закладку ‘Groups’.
  • Перетяните пул ‘Character’ в нижний Граф Каналов.
  • Перетяните соединение от канала ‘Character’ в нижнем Графе Каналов до канала ‘Render’ в верхнем Графе Каналов. Обратите внимание, что канал ‘Character’ стал красным, а в верхнем Графе Каналов был создан синий канал.
  • Нажмите закладку ‘Animation 3D View’. Обратите внимание, что персонаж отображается в окне.
  • Дважды щелкните по синему каналу ‘Character: Character -> Character’ для открытия окна его настроек. Выберите опцию ‘Disable Autoload’ (отключить автозагрузку) и нажмите ‘OK’ для подтверждения.
  • Откройте канал ‘Lua: Unload Group’ и введите следующий код:
function CallChannel()
q.RemoveChannelGroup (“Character”, 0)
end

Этот скрипт выгружает пул “Character”. Ноль означает количество дублей. Нажмите ‘OK’ для подтверждения.

  • Переключитесь в Run Mode.
  • Нажмите клавишу бэкспейс (backspace) для выгрузки заданной группы. Обратите внимание, что персонаж исчез из окна Animation 3D View. Также обратите внимание, что синий канал ‘Character’ сообщил об ошибке ‘Not Found’ (не найден).
  • Снова нажмите пробел для загрузки заданных групп. Обратите внимание, что персонаж вновь появился и синий канал ‘Character’ снова верный.

Законченная сцена:

  • ..\Tutorials\4.5 – Lua Scripting\Lua scripting 2 – Complete.cgr

Смотрите также

LUA Script Channel

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.9: 3D scenes - Quest3D

Tutorials/Manual/Chapter 1.9: 3D scenes

< Уроки | Руководство(Открыто по ссылке Раздел 1.9: 3D сцены)
Jump to: navigation, search

Содержание

  • 1 1.9 3D сцены
    • 1.1 Сцены Quest3D
  • 2 Урок
    • 2.1 Необходимые шаблоны
    • 2.2 Шаг за шагом
    • 2.3 Завершенная сцена

1.9 3D сцены

Все программы Quest3D используют те же основные принципы. Этот раздел – введение в создание проекта в Quest3D.

Сцены Quest3D

3D объекты играют важную роль в большинстве программ Quest3D. 3D объекты могут быть импортированы из вашего любимого пакета 3D моделирования. Также существует возможность использовать один из 3D объектов, сопровождающих Quest3D.

Как и в кино, сцена Quest3D нуждается в камере и одном или большем количестве источников освещения.

Канал Render используется для отображения 3D объектов на экране.

Канал Start 3D Scene используется для инициализации 3D окружения. Помимо всего прочего, он контролирует разрешение экрана и цвет фона.

Каналы Start 3D Scene, Render, Camera, 3D Object и Light комбинированы в следующую структуру каналов.

Урок

В этом уроке вы создадите простую Quest3D программу. Результатом будет сцена с 3D объектом, камерой и источником освещения.

В этом вводном разделе вы научитесь пользоваться шаблонами. Шаблоны – это предварительно подготовленные каналы или группы каналов, разработанные для ускорения вашего рабочего потока. Шаблоны, используемые в этом уроке описаны ниже в ‘Необходимых шаблонах’.

Первой целью данного урока является ознакомление вас с основами структуры программ Quest3D. Второй – передача дополнительного опыта по добавлению каналов в программу и соединением их друг с другом.

Необходимые шаблоны:

  • 01 - Scene \ Start 3D Scene
  • 01 - Scene \ Rendering \ Render
  • 01 - Scene \ Cameras \ Object Inspection Camera
  • 02 - Objects \ Object Data \ Primitive Object \ Box
  • 01 - Scene \ Lights \ Point Light

Шаг за шагом:

  • Запустите Quest3D.
  • Создайте новую сцену, выбрав ‘File > New Project...’ из Пользовательского Меню. Назовите ее ‘First project scene’.
  • В Списке Шаблонов (Template List), найдите шаблона Start 3D Scene. Его расположение указано выше, в списке ‘Необходимых шаблонов’:

3D Items \ Start 3D Scene

Нажмите символ ‘+’ напротив слов ‘3D Items’ в Templates List. Раскроется подкаталог ‘3D Items’. Один из описанных каналов - Start 3D Scene. Перетяните канал Start 3D Scene в Граф Каналов (Channel Graph).

  • Правой кнопкой нажмите на канал ‘Start 3D Scene’ и из меню выберите ‘Set as start channel’ (’Установить канал как стартовый’).
  • Найдите в списке Templates List канал Render. Его расположение указано в списке ‘Необходимые Шаблоны’ выше.
  • Перетяните канал Render в Граф Каналов, также, как и канал ‘Start 3D Scene’ перед этим.
  • Соедините квадрат связи канала ‘Render’ с дочерним квадратом связи канала ‘Start 3D Scene’.

  • Перетяните шаблон Object Inspection Camera в Граф Каналов.
  • Соедините канал ‘Object Inspection Camera’ с первым дочерним квадратом связи канала ‘Render’.
  • Убедитесь, что окно Animation 3D View в нижнем левом углу экрана отображает вашу сцену, используя Камеру Проекта (Project Camera). Иконка Project Camera расположена на Инструментальной Панели (Toolbar).
  • Добавьте шаблон Primitive Object и соедините канал ‘3D Object’ со вторым дочерним квадратом связи канала ‘Render’. Обратите внимание, что 3D объект отображается в окне Animation 3D View.

  • Перетяните шаблон Point Light в Граф Каналов. Соедините канал ‘Scene Light’ с последним дочерним квадратом связи канала ‘Render’. Обратите внимание на то, как этот источник освещения повлиял на куб.
  • Ваша текущая структура каналов должна выглядеть подобно изображенной на рисунке ниже.

  • Из Меню Пользователя выберите ‘File > Save Group As...’.
  • Укажите следующую папку:

C:\Program Files\Act-3D\Quest3D 3.x\Projects\

  • В колонке имени введите ‘3D scenes’.
  • Нажмите кнопку ‘Save’ для подтверждения.

Законченная сцена:

  • ..\Tutorials\1.9 –3D scenes\3D scenes – Complete.cgr

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.11: Summary - Quest3D

Tutorials/Manual/Chapter 1.11: Summary

< Уроки | Руководство(Открыто по ссылке Chapter 1.11: Итоги)
Jump to: navigation, search

1.11 Итоги

Первая часть руководства была введением в основные концепции Quest3D. Ниже изложены некоторые ключевые моменты этого раздела.

  • Первым шагом в создании убедительных 3D сцен и настройки их управляемости является описание того, что вы хотите построить. Quest3D помогает вам визуализировать ваши идеи.
  • Программы Quest3D состоят из строительных блоков. Эти строительные блоки называются ‘channels’ (’каналами’). Каждый канал имеет определенную функцию.
  • Маленькие черные квадраты в верхней и нижней части канала называются ‘link squares’ (’квадраты связи’). Каналы могут быть соединены друг с другом с помощью линий между верхними и нижними квадратами связи.
  • Широкая область со светло-синим фоном называется ‘Channel Graph’ (’Граф Каналов’). Channel Graph отображает каналы, используемые в программе Quest3D.
  • Новые каналы могут быть добавлены в программу с помощью перетягивания имени из Списка Шаблонов (Templates List) в левой части экрана в Графе Каналов (Channel Graph).
  • ‘Шаблоном‘ (‘Template’) является предварительно подготовленный канал или группа каналов, разработанных для ускорения вашего рабочего процесса.
  • Все программы Quest3D используют одинаковые основные принципы. 3D объекты играют важную роль в большинстве программ Quest3D. Также, как и в кино, сцена Quest3D нуждается в камере и одном или более источниках освещения.
  • Пользовательский ввод может быть зарегистрирован, например, для клавиатуры, мыши, джойстика, планшета и пера, а также шлема виртуальной реальности.
  • Публикация проекта Quest3D означает его вынос из редактора и преобразование его в отдельную, самостоятельную программу.

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.1: Introduction - Quest3D

Tutorials/Manual/Chapter 1.1: Introduction

< Уроки | Руководство
Jump to: navigation, search

Введение

За прошлые годы 3D компьютерная графика штурмом захватила мир. Голливудские фильмы полны анимированными монстрами и целыми чужими планетами. Видео игры предлагают управление фантастическими персонажами и исследование обширных интерактивных миров. Коммерческие и научные презентации также выполняются в 3D. Даже целые тренировочные программы имеют место в виртуальной реальности.

Хотя 3D компьютерная графика достигла потокового статуса, в действительности ее создание все еще требует больших усилий. Только с помощью специализированных инструментов возможно создать убедительный результат своевременно.

Quest3D является отличным программным пакетом для создания интерактивных 3D сцен. Примерами могут быть презентации продукта, архитектурные визуализации, виртуальные тренажеры и компьютерные игры.

Возможности Quest3D объясняются уникальным стилем программирования. Вместо написания тысяч линий сложного кода, разработчикам предоставлена возможность использования широкого набора мощных строительных блоков. Гибкий и легкий в применении, Quest3D отлично подходит дизайнерам, программистам и художникам.

Работа с Quest3D означает разработку в реальном времени: вы работаете непосредственно над конечным результатом. Времени на компиляцию кода или визуализацию изображения практически не затрачивается.

Quest3D обладает ошеломляющим набором графических возможностей. Широкий набор анимированных людей, убедительной растительности, теней, эффектов огня, дыма и реалистичной воды легко могут быть добавлены в сцену. Продвинутые возможности включают в себя имитацию физики, поиск пути, совместимость баз данных и сетевую поддержку.

Эта книга – ваш гид в Quest3D. Она совмещает теорию и практические примеры в форме пошаговых уроков. После чтения этого руководства вы должны будете чувствовать себя более уверенно на пути создания практически любой вообразимой интерактивной 3D сцены.

Добро пожаловать в удивительный мир Quest3D!

Перевел Ovod, 2008

Назад


Tutorials/Manual/Chapter 1.2: How to use this manual - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorials/Manual/Chapter 1.2: How to use this manual

From Quest3D

< Tutorials | Manual
Jump to: navigation, search

Contents

  • 1 How to use this manual
    • 1.1 Parts
    • 1.2 Chapters
    • 1.3 Tutorials
    • 1.4 Format
    • 1.5 Reference Manual

How to use this manual

The following text describes the organisation of this manual.

Parts

This book is divided into four parts.

  • Part I, ‘Getting started’, is an introduction to Quest3D.
  • Part II, ‘The virtual studio’, discusses 3D objects and animation in great detail.
  • Part III, ‘Programming’, takes a closer look at the heart of a Quest3D project – the ‘code’.
  • Part IV, ‘Expert level’, deals with advanced features, some of which are only available in certain editions of Quest3D.

Chapters

Chapter start with an introduction to a new subject. Next is a discussion of the various related Quest3D channels and functionality. Finally, a step by step tutorial is presented to give users a hands-on experience with the subject matter.

Tutorials

After Quest3D is installed, the completed scenes of every tutorial in this manual can be found on the harddisk of your computer. By default, they are located in the following directory:

C:\Program Files\Act-3D\Quest3D 3.x\Tutorials\

Format

The following formats have been used throughout this manual.

  • New concepts are printed in bold.

Example: Quest3D building blocks are called ‘channels’.

  • Channels (single building blocks) already used in a Quest3D program are printed between single quotes, with capitals for every word.

Example: Connect the ‘Logic’ channel to the ‘Start Scene’ channel.

  • Channels and templates (building blocks) that are added from the Templates List to the program are printed in italics, with capitals for every word.

Example: Add a Value channel to your program.

  • The locations of channels and templates within the Templates List are printed as folders seperated by a backslash.

Example: Logic \ Channel Caller

  • Options from the Application menu are printed as follows.

Example: ‘File > Save Group As’

  • Files and directories are printed in an Arial font.

Example: C:\Program Files\Act-3D\Quest3D 3.x\

  • S ubfolders of the Quest3D directory are referred to as follows.

Example: ..\Resources\Textures\

Reference Manual

As a complementary source of help to this book, the Reference Manual contains descriptions of each of the various channels in Quest3D. It can be accessed by pressing the ‘F1’ key while running the program.

Back to Main Index


Tutorials/Manual/Chapter 1.8: Templates - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorials/Manual/Chapter 1.8: Templates

From Quest3D

< Tutorials | Manual
Jump to: navigation, search

1.8 Templates

A template is a predefined channel or group of channels designed to speed up the workflow.

Templates can immediately be used in a scene. A benefit of working with templates is that you don’t have to understand each of the components right away. Later on, when you are more familiar with Quest3D, you can take a better look at all the various templates. You can even build your own.

Below is a quick list of the categories of templates that come with Quest3D. It is intended to give you an impression of the scope of the entire set. The rest of this manual discusses many of these templates and their functionality in greater detail.

Category | Description | Example templates
Scene | 3D stage setup | Render Camera Light
Objects | 3D objects, surfaces and special effects | Primitive Object Texture Particle System Pixel Shader Vertex Shader
Logic | Conditions and triggers in a program | Channel Caller If Trigger Channel Switch User Input Finite State Machine Motionplanning
Variables | Data containers and operators | Value Vector Matrix Text Expression Value
Animation | Timers, regular and character animation | Timer Value Timer Command Motionset
Sound | Sound and music | Wav File Mp3 File Sound Command
Physics | Physics simulation (based on Open Dynamics Engine) | ODE Body ODE Joint ODE Command
System | System Dynamic loading of parts of a program Windows Viewers | System Info System Command Save Channel to Buffer Array Buffer Remove Group Message Box File Dialog Open URL ActiveX Event WinAmp Waveform
Power Edition | Network Connecting multiple computers Connecting to a database HDR Particles | Network Value Network Text Network Actions DB Source DB Query DB Value
VR | Virtual reality support | Glove Force Feedback Serial Socket Stereo Render

Back to Main Index


Tutorials/Manual/Chapter 1.11: Summary - Quest3D

Tutorials/Manual/Chapter 1.11: Summary

< Tutorials | Manual
Jump to: navigation, search

1.11 Summary

This first part of the manual was an introduction to the basic concepts of Quest3D. Below some of the key points of this section are listed.

  • The first step in creating convincing 3D scenes, and keeping your project managable, is being able to describe what you actually want to build. Quest3D helps you to visualise your ideas.
  • Quest3D programs are made with building blocks. These building blocks are called ‘channels’. Each channel has a specific function.
  • The small black squares above and beneath a channel are called ‘link squares’. Channels can be connected to each other by lines between top and bottom link squares.
  • The large area with the light blue background is called the ‘Channel Graph’. The Channel Graph shows the channels used in a Quest3D program.
  • New channels can be added to a program by dragging a name from the Templates List on the left side of the screen onto the Channel Graph.
  • A ‘Template’ is a predefined channel or group of channels designed to speed up the workflow.
  • All Quest3D programs share the same basic principles. 3D objects play an important part in most Quest3D programs. Just like a movieset, a Quest3D scene needs a camera and one or more lights.
  • User input can be registered through for example keyboard, mouse, joystick, drawing tablet and pen, and virtual reality gear.
  • Publishing a Quest3D project means taking it out of the editor and creating a seperate, stand-alone program.

Back to Main Index


Chapter 2.11: Character animation - Quest3D

Chapter 2.11: Character animation

Содержание

  • 1 2.11 Анимация персонажей
    • 1.1 Виртуальные скелеты
    • 1.2 Анимация персонажей в Quest3D
    • 1.3 Переключение наборов движений
    • 1.4 Смешивание наборов движений
    • 1.5 Дампинг значений
  • 2 Урок
    • 2.1 Необходимые .X файлы
    • 2.2 Необходимые шаблоны
    • 2.3 Шаг за шагом
    • 2.4 Законченная сцена
    • 2.5 Необходимая сцена Quest3D
    • 2.6 Необходимые .X файлы
    • 2.7 Необходимые шаблоны
    • 2.8 Шаг за шагом
    • 2.9 Законченная сцена

2.11 Анимация персонажей (Character animation)

Раздел 2.2 раскрыл основы анимации 3D объектов. В данном разделе будет обсуждена более продвинутая форма: анимация персонажей.

Люди и животные не просто скользят при перемещении. Напротив, они используют различные части тела независимо друг от друга. И в то же время, вся эта коллекция разных конечностей движется в единой системе. Когда движется одна конечность, кожа растягивается вместе с ней.

Виртуальные скелеты

3D модели могут быть настроены для действий в подобной манере. Полигональная поверхность модели может быть отображена как скин (skin - шкурка). Виртуальный скелет может быть использован для анимации различных частей скина по отдельности. Говоря практическим языком, каждая вершина 3D модели должна быть привязана к соответствующим костям виртуального скелета.

Продвинутые пакеты моделирования, такие, как 3D Studio Max укомплектованы предварительно созданными скелетами. Они могут быть привязаны напрямую к вашему персонажу, или настроены и расширены при необходимости. Пожалуйста, обратите внимание на справочный материал вашей программы моделирования для дополнительной информации о работе с виртуальными скелетами. Ключевые слова: ‘bone’, ‘animation’, ‘biped’.

Анимация персонажей в Quest3D

Данные анимации виртуального скелета могут быть импортированы в Quest3D. 3D модель с костной анимацией будет выглядеть почти так же, как и стандартная структура канала 3D Object. За исключением двух добавленных каналов.

Канал персонажа Skinned Character расположен между каналами Surface и 3D Object Data. Он содержит определение виртуального скелета и информацию о том, как 3D модель присоединена к виртуальному скелету.

Канал Motionset содержит все данные о костной анимации в форме ключевых кадров для позиции, ориентации и масштабирования. Анимация может быть воспроизведена с помощью присоединения значения к первому потомственному входу Motionset (например, TimerValue).

Переключение наоборов движений (Switching Motionsets)

Персонажам, участвующим в сцене, желательно иметь более одной анимации. В различные точки времени они могут спокойно стоять, ходить, бегать или использовать объекты, к примеру. Один из способов для переключения между анимациями - это использование Channel Switch. Операясь на индексное значение (index value), будет выбран один из наборов движений Motionsets.

Микшер движений (Motionset Blender)

Решение проблемы с жесткими переходами. Для того, чтобы переключение между анимациями было более гладким, может быть использован Motionset Blender. Этот канал поддерживает два набора движений Motionsets и одно значение Value. Это значение определяет, как много из двух наборов отображается. Значение 0 означает, что используется только первый набор Motionset, в то время, как значение 1 означает использование только второго. Значение между 0 и 1 эффективно смешивает оба набора с помощью линейной интерполяции.

Изображение ниже показывает 100% ходьбы, 50% ходьбы и сидения, и 100% сидения, соответственно.

Значение смешивания (blend value) микшера Motionset Blender может быть производным любого типа информации, используемой где-либо в программе Quest3D. Каналы Envelope могут быть использованы для конвертирования любого значения в необходимый диапазон от 0 до 1. Пример смешивания значений включает в себя пользовательский ввод User Input и скорость объекта (speed).

Дампинг Значений (Value Damping)

Компактный и экономный способ для анимации перехода от 0 до 1 и наоборот - это использование канала Value Damping.

Урок

Следующее упражнение объясняет процесс импорта анимации персонажа в Quest3D. Также оно описывает смешивание наборов движений (motionset blending).

Необходимые .X файлы:

  • ..\Resources\Characters\Animated character – Idle.X
  • ..\Resources\Characters\Animated character – Walk.X

Необходимые шаблоны:

  • Scene \ Start 3D Scene
  • Scene \ Simple Scene
  • Animation \ TimerValue
  • Animation \ Deformations \ Motionset Blender
  • Variables \ Value \ Value Damping
  • Logic \ User Input \ User Input

Шаг за шагом:

  • Из меню File, выберите ‘Import’.
  • Найдите файл ‘..\Resources\Characters\Animated character – Idle.X’ и нажмите ‘Open’.
  • Введите ‘Character animation 1’ в качестве Пулового имени и нажмите ‘OK’ для подтверждения.
  • В окне импорта ‘X Object Importer Options’, выберите ‘Load as indexed character’ (загрузить, как индексированный персонаж), и нажмите ‘OK’ для подтверждения. Модель 3D персонажа будет импортирована в Quest3D.

  • Переименуйте канал типа 3D Object в ‘Animated Character’.
  • Перетяните канал Simple Scene в Граф Каналов.
  • Удалите 3D Text Object
  • Установите Start 3D Scene как стартовый канал.
  • Подключите канал ‘Animated Character’ к ‘Render’. Обратите внимание, что он отображается в обзорном виде Animation 3D View.
  • Переименуйте канал ‘Motionset’ на ‘Idle Motionset’.
  • Перетяните Timer Value в Граф Каналов и присоедините его к каналу ‘Idle Motionset’. Дважды щелкните по каналу ‘Timer Value’, выберите ‘New..’ из выпадающего списка и введите ‘Animated Character Idle’ в боксе редактирования. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Перейдите в Раздел Анимации.
  • Убедитесь, что обзорный вид Animation 3D View отображает сцену с помощью проектной камеры Project Camera.
  • Выберите ‘Animated Character Idle’ из выпадающего списка. Установите конечный кадр на ‘450’ и нажмите кнопку Play. Обратите внимание, что персонаж начал анимироваться.

  • Перейдите в Раздел Каналов.
  • Удалите соединение между каналами ‘Idle Motionset’ и ‘Skinned Character’.
  • Добавьте Motionset Blender и подключите его к каналу ‘Skinned Character’.
  • Подключите ‘Idle Motionset’ к Motionset Blender.
  • Импортируйте файл, ‘Walk.X’ с помощью процедуры, описанной выше.
  • Найдите канал ‘Motionset’ вновь импортированной группы и скопируйте его.
  • Переключитесь в главную группу каналов.
  • Вставьте Motionset в Граф Каналов.
  • Переименуйте Motionset в ‘Walk Motionset’ и подключите его ко второму потомственному входу канала ‘Motionset Blender’.
  • Перетяните другой канал Timer Value в Граф Каналов и подключите его к каналу ‘Walk Motionset’.
  • Установите этот Timer Value на новый таймер, названный ‘Animated Character Walk’
  • Перетяните Value Damping в Граф Каналов и подключите его к третьему потомственному входу канала ‘Motionset Blender’.
  • Добавьте канал User Input и подключите его к каналу ‘Value Damping’. Установите канал User Input на клавишу со стрелкой Вверх (Arrow Up).

  • Перейдите в Раздел Анимации.
  • Выберите ‘Animated Character Walk’ (ходьба анимированного персонажа) из выпадающего меню таймера. Установите конечный кадр на ‘27’ и нажмите кнопку Play.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу вверх. Обратите внимание, как увеличилось значение Value Damping от ‘0’ до ‘1.0’ в течение времени. Обратите внимание, как перетекла анимация 3D персонажа из состояния ожидания в ходьбу.
  • Отпустите клавишу вверх. Обратите внимание, как значение Value Damping понизилось с 1 до 0 в течение времени. Обратите внимание, что анимация 3D персонажа перетекла из ходьбы в ожидание.
  • Переключитесь в режим Edit Mode.

Законченная сцена:

  • ..\Tutorials\2.11 – Character animation\Character animation 1 – Complete.cgr

Если вы хотите, вы можете сохранить данную группу каналов в вашу папку проектов. Следующие шаги предназначены для работы с новой сценой.

Необходимая сцена Quest3D:

  • ..\Tutorials\2.11 – Character animation\Character animation 2.cgr

Необходимые .X файлы:

  • ..\Resources\Characters\Animated character – Idle.X
  • ..\Resources\Characters\Animated character – Walk.X
  • ..\Resources\Characters\Animated character – Run.X

Необходимые шаблоны:

· Variables \ Value \ Value Damping · Variables \ Value \ Envelope (x2)

Шаг за шагом:

  • Откройте файл, ‘Character animation 2.cgr’. Он содержит простую сцену, персонаж с несколькими анимациями и камеру от 3го лица.
  • Перейдите в Раздел Анимации.
  • Убедитесь, что вид 3D Анимации отображает камеру с помощью Проектной камеры.
  • Переключитесь в Run Mode.
  • С помощью клавиш со стрелками и мыши управляйте персонажем в сцене. Обратите внимание, что камера остается за персонажем. Заметьте, что персонаж пока не анимирован правильно и отображается лишь в состоянии покоя.
  • Переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Добавьте канал Envelope и подключите его к каналу ‘Value Damping’.
  • Создайте ярлык канала ‘Character Speed’ (часть Collision Response system) и подключите его к Envelope.
  • Дважды щелкните по Envelope. Добавьте точку в (0, 0). Эта точка означает, что когда скорость персонажа (ввод) равна 0, Motionset Blender будет полностью использовать анимацию покоя ‘Idle’.
  • Добавьте точку в (0.02,1), что значит, когда скорость персонажа будет 0.02, Motionset Blender будет полностью использовать анимацию ‘Walk’. Скорость между 0 и 0.02 приведет к смешиванию 0 и 1 между анимациями ‘Idle’ и ‘Walk’.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу вверх. Обратите внимание, что канал ‘Character Speed’ (скорость персонажа), изменил свое значение. Заметьте, как анимация персонажа перетекла из ‘Idle’ в ‘Walk’.
  • Отпустите клавишу вверх. Обратите внимание, что канал ‘Character Speed’ сменил свое значение. Анимация персонажа перетекла из ‘Walk’ в ‘Idle’.
  • Переключитесь в Edit Mode.
  • Добавьте другой Envelope и привяжите его к каналу Value Damping, связанного с Motionset Blender, объединяющим каналы ‘Walk’ и ‘Run’.
  • Создайте еще один ярлык канала ‘Character Speed’ и подключите его к новому Envelope.
  • Дважды щелкните по Envelope. Добавьте точку (0.25, 0) и (0.5, 1).
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену, нажав на клавишу вверх. Обратите внимание, что персонаж начал ходить.
  • Нажмите на клавиши вверх и Shift. Обратите внимание, что скорость персонажа начала возрастать и персонаж начал бежать.

Законченная сцена:

  • ..\Tutorials\2.11 – Character animation\Character animation 2 – Complete.cgr

Перевел Ovod, 2008

Назад


CharacterSkin - Quest3D

CharacterSkin

Contents

  • 1 CharacterSkin
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

CharacterSkin

General

Provides smooth skinned objects that are imported from a animation/modelling package.

Children

  1. Skinning Data - 3D ObjectData
    • The original mesh.
  2. Animation Set - MotionSet
    • All the motions of the bones.
  3. Parent Matrix - Matrix
    • Matrix that moves the entire mesh.

Description

This special 3D ObjectData channel deforms a mesh by a virtual skeleton. Each vertex in the mesh is connected to one or more bones. Each vertex has one or more vertex weights that describes how much each bone influences the vertex.

The vertex weights are typically imported from a 3D animation package. The rest positions of the 'bones' are also stored in this channel. The rest positions describes the position of the bones while they do not deform the mesh. These rest positions are also imported from an animation package most of the time.

Example of smooth skinning. Notice the scaled head and the smoothly bend joints.

The first child is the original 3D ObjectData. The second child is a MotionSet. This channel defines all the motions of all the bones in one single channel. The last channel is a parent motion for the entire object. The motion children of this channel override the motion that is attached to the object. You can link a motion to the last child link position if you want to move the entire object at once.

CallChannel

Updates the mesh and sends the 3D mesh to the 3D card.

Remarks

The motion that is connected to the object that uses this channel has no effect. To overcome this you should also link the motion to the last child link position of the Characterskin.

Applications

Used to create animated characters or other objects that need smooth bending joints.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Objects and Rendering


CheckRenderCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

CheckRenderCount

From Quest3D

Jump to: navigation, search

Function definition

bool CheckRenderCount();

Description

Check if the current channel already has been used in the current tree count.

Return value

A DWORD containing the time stamp, that is set to the last time SetTimeStamp is called

Remarks

There "RenderCount", also called "Tree Count" is increased every time the channel tree is called. Every channel can detect whether it has been used before in that tree count time frame. You might want to do certain calculation only once per tree count.

More important, this function is used for Loop protection.

The function will always return true when the "Ignore Tree Count" setting has been turned on.

Related Documentation

GetIgnoreTreeCount, SetIgnoreTreeCount

One Level Up - A3d Channel

Back to Main Index


SDK/Channels/ChildCreation - Quest3D

SDK/Channels/ChildCreation

< SDK | Channels(Redirected from ChildCreation)
Jump to: navigation, search

Struct definition

struct ChildCreation { ChannelType channelType; int requestLink; bool linked; bool initialize; char name[100]; GUID channelUpgradeGUID; ChildInfo* childInfo; };

Description

This structure is used to create a new child link position with the SetChildCreateType function

Data members

Name | Description
channelType | ChannelType struct that is filled with the correct channel type information. The guid and name members of this struct are used to create the child link position.
requestLink | Position of the link, use -1 if you want a growing child link position.
linked | Not used.
initialize | When this variable is set to true, a channel is created and linked to the child link position when the child link position is created. This channel will have the same type as the channelType.guid variable.
name | A string where the name of the channel can be stored, should be NULL terminated and never longer than 60.
channelUpgradeGUID | If initialize is set to true this GUID can be set to change the type of the channel that should be created. This overrides the GUID set in the channelType.guid variable of this struct.
childInfo | Pointer to a ChildInfo struct that contains more information on the child that is actually linked. This struct is managed by Quest3D and you are able to use this pointer to retrieve information.

Related Documentation

ChannelType struct, ChildInfo struct, SetChildCreateType

One Level Up - Channels

Back to Main Index


SDK/Channels/ChildCreation - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/ChildCreation

From Quest3D

< SDK | Channels
Jump to: navigation, search

Struct definition

struct ChildCreation { ChannelType channelType; int requestLink; bool linked; bool initialize; char name[100]; GUID channelUpgradeGUID; ChildInfo* childInfo; };

Description

This structure is used to create a new child link position with the SetChildCreateType function

Data members

Name | Description
channelType | ChannelType struct that is filled with the correct channel type information. The guid and name members of this struct are used to create the child link position.
requestLink | Position of the link, use -1 if you want a growing child link position.
linked | Not used.
initialize | When this variable is set to true, a channel is created and linked to the child link position when the child link position is created. This channel will have the same type as the channelType.guid variable.
name | A string where the name of the channel can be stored, should be NULL terminated and never longer than 60.
channelUpgradeGUID | If initialize is set to true this GUID can be set to change the type of the channel that should be created. This overrides the GUID set in the channelType.guid variable of this struct.
childInfo | Pointer to a ChildInfo struct that contains more information on the child that is actually linked. This struct is managed by Quest3D and you are able to use this pointer to retrieve information.

Related Documentation

ChannelType struct, ChildInfo struct, SetChildCreateType

One Level Up - Channels

Back to Main Index


ChildInfo - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ChildInfo

From Quest3D

Jump to: navigation, search

Struct definition

struct ChildCreation { ChannelType channelType; int requestLink; bool linked; bool initialize; char name[100]; GUID channelUpgradeGUID; ChildInfo* childInfo; };

Description

This structure is used to create a new child link position with the Channels Introduction function

Data members

Name | Description
channelType | ChannelType struct that is filled with the correct channel type information. The guid and name members of this struct are used to create the child link position.
requestLink | Position of the link, use -1 if you want a growing child link position.
linked | Not used.
initialize | When this variable is set to true, a channel is created and linked to the child link position when the child link position is created. This channel will have the same type as the channelType.guid variable.
name | A string where the name of the channel can be stored, should be NULL terminated and never longer than 60.
channelUpgradeGUID | If initialize is set to true this GUID can be set to change the type of the channel that should be created. This overrides the GUID set in the channelType.guid variable of this struct.
childInfo | Pointer to a ChildInfo struct that contains more information on the child that is actually linked. This struct is managed by Quest3D and you are able to use this pointer to retrieve information.

Related Documentation

SetChildCreateType, ChildCreation Struct

One Level Up - Channels

Back to Main Index


OO Class Instances List - Quest3D

OO Class Instances List

(Redirected from Class Instances List)
Jump to: navigation, search

Contents

  • 1 OO Class Instances List
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Properties
    • 1.6 Remarks

OO Class Instances List

Children

none

Description

This channel is used to create a list of instances of the same or varying ClassTypes.

CallChannel

Calling this channel will provide the parent with a list of created instances.

Interface

Class Instances List01.jpg

Properties

Use the Add or Insert Class button to add new instances of certain ClassTypes, the Remove Class button will remove the slelected instance from the list.

Remarks

A Class instance list can hold different Classes with different interfaces. Use the OO InterfaceCommand iteration/random access->For each Class Instance List to loop trough all the instances.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


SDK/Channels/Class Structure - Quest3D

SDK/Channels/Class Structure

< SDK | Channels(Redirected from Class Structure)
Jump to: navigation, search

Class Structure

Quest3D uses a certain structure for the channels to make sure they can be initialized correctly. It also needs this structure to make sure you are able to derive channels and link them together correctly. Here is in short the structure of a channel with a new base type, and a derived channel:

New Channel Class Structure

Channel Class Structure

This is a typical channel class structure. When you create a new channel it is derived from then A3d_Channel class. This class has a number of functions for child creation, child linking, child calling and loading and saving of channel data.

Derived Channel Class Structure

Derivec class structure

Above is the typical structure when you derive from an existing channel. This is needed when you want to create a channel that is also able to link to another channel that accepts children of a certain type. In this example it is a Float called [Value] in Quest3D.

One Level Up - Channels

Back to Main Index


SDK/Channels/Class Structure - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/Class Structure

From Quest3D

< SDK | Channels
Jump to: navigation, search

Class Structure

Quest3D uses a certain structure for the channels to make sure they can be initialized correctly. It also needs this structure to make sure you are able to derive channels and link them together correctly. Here is in short the structure of a channel with a new base type, and a derived channel:

New Channel Class Structure

Channel Class Structure

This is a typical channel class structure. When you create a new channel it is derived from then A3d_Channel class. This class has a number of functions for child creation, child linking, child calling and loading and saving of channel data.

Derived Channel Class Structure

Derivec class structure

Above is the typical structure when you derive from an existing channel. This is needed when you want to create a channel that is also able to link to another channel that accepts children of a certain type. In this example it is a Float called [Value] in Quest3D.

One Level Up - Channels

Back to Main Index


ClassType - Quest3D

ClassType

(Redirected from Class Type)
Jump to: navigation, search
OO ClassType


OO ClassInstance - Quest3D

OO ClassInstance

(Redirected from ClassInstance)
Jump to: navigation, search

Contents

  • 1 OO ClassInstance
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface

OO ClassInstance

Children

none

Description

This channel is used to create a single instance from a certain ClassType.

CallChannel

Calling this channel will provide the parent with the created instance.

Interface

Use the Set Class button to select and set the ClassType

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO ClassType - Quest3D

OO ClassType

(Redirected from ClassType)
Jump to: navigation, search

Contents

  • 1 OO ClassType
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Remarks

OO ClassType

Children

none

Description

This channel is can be set to a ClassType. The channel can be used with the OO InterfaceCommand to create new ClassInstances of a certain ClassType.

CallChannel

Calling this channel will pass the ClassType to it's parent.

Interface

Remarks

Use the dialog to set the correct ClassType.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


ClearScreen - Quest3D

ClearScreen

Contents

  • 1 ClearScreen
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

ClearScreen

General

Clears the screen with a given color

Children

  1. R - Value
    • Red value of the color used to clear the screen. Range from 0 to 1.
  2. G - Value
    • Green value of the color used to clear the screen. Range from 0 to 1.
  3. B - Value
    • Blue value of the color used to clear the screen. Range from 0 to 1.

Description

In the properties window you can configure what should be cleared of the screen (DirectX back buffer).

  • Clear Color Buffer - This channel will clear the screen (the DirectX backbuffer) and fill it with the color linked.
  • Clear Z buffer - Clear the Z buffer so it can be re-used in the next frame.
  • Clear Stencil Buffer - Clear the stencil buffer, for usage with the stencil shadows.

All options are on by default.

You can link three children that define the Red, Green and Blue part of the color. Colors are ranged from 0 to 1. with all possible numbers in between making more than 32 bits colors possible although the number of colors is limited to the current settings of the 3D card.

CallChannel

When called this channel will actually clear the screen with the given color.

Remarks

  • You don't need to use this channel if you start your project with the Start3DScene channel. All these functions are already included in that channel
  • Use this channel before calling Command with Begin Scene setting.
  • You always need to keep calling this channel else your screen will turn black. So don't use it with a OneTime channel.
  • Beware: Do not keep calling this channel without calling a Present or else you application will stop.
  • When using in the editor, please beware that use you a NotInEditor channel to protect yourself from strange blinking screens.

Tips

  • Set all three child values to 0 (zero) for a black screen
  • Set all three child values to 1 for a white screen
  • Use a 3D engine template to make sure you get this channel called the right way

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


ClothObject - Quest3D

ClothObject

Contents

  • 1 ClothObject
    • 1.1 General
  • 2 Children
    • 2.1 Description
    • 2.2 CallChannel
    • 2.3 Applications
    • 2.4 Tips

ClothObject

General

Create a realistic falling cloth object

Children

  1. Force Vector - Value Vector
    • Force on the cloth object often gravity
  2. Run Simulation - Value
    • 0 - Don't calculate cloth, 1 - calculate cloth
  3. Initial Position - Value Vector
    • Matrix of the starting position of the cloth
  4. Cloth Parenting - Matrix
    • Parent cloth points to a matrix
  5. Collision Objects - CollisionObject
    • Collision objects the cloth can collision to
  6. Collision Spheres - Matrix
    • Spheres the cloth can be pushed by

Description

Cloth object will simulate cloth behaviour. You can create flags or curtains or hanging capes with this channel. There are two methods of having collision with the cloth object. First is trough the collision objects linked to the cloth channel the second is using matrixes that are interpreted as collision spheres. Only the spheres are able to themselves push the cloth back. The collision objects are presumed to be stationary.

Link a Value Vector to the cloth channel to set a force the cloth will use to determine its motion. This can be any direction to simulate wind or for example (0,-0.1,0) for gravity.

To run the simulation make sure the Run Simulation value is 1 when it is zero the cloth object is reset and the initial position matrix is used to place the cloth. You can also create a snapshot to have a non square beginning of the simulation.

Do not move the position of the cloth object itself but link a matrix to the Initial Position link to place the cloth.

You can link additional matrixes to the "Cloth Parenting" link and use the cloth channel interface to assign these linked matrixes to vertexes of the cloth. Choose a vertex and assign the matrixes to it. When the simulation is not running you can see which vertex you selected when looking at the cloth.

In the interface you can determine the simulation precision and the specific cloth parameters. With cloth width and height the size of the cloth is created. With the linecounts you can increase how complex the cloth is.

You can also take snapshots of the current state of the cloth to let the simulation continue at a point you want it to.

Cloth is often not complex enough to fall on an object without seeing it pass trough it. You can use the ObjectDataNormalDisplace channel to create a bigger source object so the cloth falls better over the object.

CallChannel

Calling this channel also renders the cloth.

Applications

Curtains flags or simple capes can be created with the cloth channel.

Tips

Increase the cloth denstity a little for better effect but make sure it is not to complex it can ask for a lot of compute power very quickly.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Objects and Rendering


CollisionObject - Quest3D

CollisionObject

(Redirected from Collision Object)
Jump to: navigation, search

Contents

  • 1 CollisionObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

CollisionObject

General

Calculate a collision tree from the linked child to be used for collision.

Children

  1. Objects - 3D Object
    • The channel to optimize for collision detection

Description

This channel will calculate a collision tree that can be used by the one of the channels that accepts this channel as children for fast collision detection.

This channel will create an optimized tree once it is used. You are able to configure how this tree is created in the dialog:

In the dialog you are able to configure the following properties:

  • Maximum tree depth - Maximum depth of the tree that is created. You might want to increase the depth when your model is large but has some small details. The maximum depth is 16, the minimum 1.
  • Polygon count in leafs - The number of polygons that should be placed in a leaf when creating the tree. If the tree depth is reached, all remaining polygons will be placed in the leafs.
  • Create Tree - When this button is clicked the tree is re-created and the statistics are updated.

There are a number of statistics in the properties window that will allow you to fine tune the tree settings. Most of the times the default settings will be just fine. Keep a close eye on the memory usage when tuning the properties, because it might grow rapidly.

In the new dialog (not this picture) you can now enable the collision object channel to keep checking if its child object has changed and then recalculate its internal tree.

CallChannel

Calling this channel will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


CollisionBoxCheck - Quest3D

CollisionBoxCheck

Contents

  • 1 CollisionBoxCheck
    • 1.1 General
    • 1.2 Children
    • 1.3 Description

CollisionBoxCheck

General

Check box collision of an Collision Response channel.

Children

  1. Box position - Matrix
    • Box transformation to check the collision with
  2. Collision Objects - CollisionObject
    • Objects that need to be checked for collision with the configured box

Description

This channel will check if any of the linked CollisionObject children has collision with a box. The box is controlled by the matrix that is linked as the first child. A base box of -0.5, -0.5, -0.5 to 0.5, 0.5, 0.5 is transformed with the matrix to get the final box. When collision is detected, this channel will set its value to the number of the object linked (starting at 1) and will remain -1 when no collision is detected. A box primitive should be at the same position when its matrix is linked to the CollisionBoxCheck as the box that is created internally.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


CollisionObject - Quest3D

CollisionObject

Contents

  • 1 CollisionObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

CollisionObject

General

Calculate a collision tree from the linked child to be used for collision.

Children

  1. Objects - 3D Object
    • The channel to optimize for collision detection

Description

This channel will calculate a collision tree that can be used by the one of the channels that accepts this channel as children for fast collision detection.

This channel will create an optimized tree once it is used. You are able to configure how this tree is created in the dialog:

In the dialog you are able to configure the following properties:

  • Maximum tree depth - Maximum depth of the tree that is created. You might want to increase the depth when your model is large but has some small details. The maximum depth is 16, the minimum 1.
  • Polygon count in leafs - The number of polygons that should be placed in a leaf when creating the tree. If the tree depth is reached, all remaining polygons will be placed in the leafs.
  • Create Tree - When this button is clicked the tree is re-created and the statistics are updated.

There are a number of statistics in the properties window that will allow you to fine tune the tree settings. Most of the times the default settings will be just fine. Keep a close eye on the memory usage when tuning the properties, because it might grow rapidly.

In the new dialog (not this picture) you can now enable the collision object channel to keep checking if its child object has changed and then recalculate its internal tree.

CallChannel

Calling this channel will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


CollisionRayCheck - Quest3D

CollisionRayCheck

Contents

  • 1 CollisionRayCheck
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

CollisionRayCheck

General

Check the collision of a Ray against the Collision Object channels.

Children

  1. Original Position - Value Vector
    • Position of the ray
  2. Movement Vector - Value Vector
    • Movement of the ray
  3. Out: Intersection Point - Value Vector
    • Intersection Point
  4. Out: Intersection Direction - Value Vector
    • Intersection Direction
  5. Collision Objects - CollisionObject
    • Objects that need to be checked for collision

Description

This channel will check if any of the linked CollisionObject children has collision with a given ray. This ray can be configured using the other children.

When collision is detected, this channel will set its value to the number of the object linked (starting at 1) and will remain zero when no collision is detected.

The ray is determined by the original position vector and the movement vector children. When collision is detected the 3rd intersection point vector will be the position in 3d space where collision was detected. The 4th child intersection direction will be the normal of the polygon on which collision was detected.

To retrieve the closest collision of the ray instead of the actual collision you are able set the "Get closest collision" option in the properties window. This will keep calculating all collision points of the ray and return the collision that was the closest.

CallChannel

Calling this channel has no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


CollisionResponse - Quest3D

CollisionResponse

Contents

  • 1 CollisionResponse
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips
    • 1.8 Example

CollisionResponse

General

Provides simple collision detection.

Children

  1. In: Movement Vector - Value Vector
    • The movement vector of the spheroid for the current frame.
  2. In: Collision Spheroid Radius - Value Vector
    • The radiuses of the collision spheroid.
  3. Out: Movement Position - Value Vector
    • The initial position for the movement.
  4. In: Friction - Value
    • Friction factor between 0 and 1
  5. Out: Speed - Value
    • The speed of the motion in the last frame.
  6. Out: User can jump - Value
    • Value to check if the user can jump.
  7. In: Collision objects - 3D Object
    • The object that the spheroid can collide with.

Description

Situation before the colision.

The Collison response is a channel that can replace the posion vector of an object or a Camera. The collision response makes sure the camera or object reacts as you would expect when a collion occurs.

Effect of the collision response

The first child is a movement vector. This is a vector that describes the movent in the current frame. The next child is a vector that describes the collision spheroid. The collision routines assume the camera or object you are moving trough the scene is a spheriod. This is for simplicity. A spheroid is much like a sphere but you can specify its radius in each axis. To create an egg-like shape you would use a Y-radius that is somewhat larger than the other radiuses for example.

The next vector is the position of the sphere. You can use this vector to reset the position of the collision sphere. You can use the Set Vector for this for example. The collision routine alway takes this position as the starting position of the collision sphere.

The friction child is a value between 0.0 and 1.0 that specifies the friction of the spheroid as it hits a wall. A large factor will simulate a splippery surface such as ice and a small value will simulate a surface with a lot of grip. Always use a value smaller than 1.0 otherwise you will keep accelerating.

The speed child is filled with the speed of the spheroid. You can use this to find out how fast you are moving or you can compare it to the speed in the last frame to see if the speed difference is too high. If the speed difference (g force) is too high a game character usually gets hurt.

The vertical penalty force is a value that indicates how much the spheroid is moved upwards compared to the position if it had no collision. If a spheroid has no upward force it usually means that it has no ground under its 'feet'. You can use this to figure out if the user is allowed to jump or not.

At the end you can link an endless amount of objects you want to detect collision on.

CallChannel

Calling this channel will update all the values.

Remarks

  • The collision response channel supports objects that are rotated, scaled etc. It does not support dynamic objects (apart from the collision spheroid).
  • The collision response channel uses no BSP/Octree or other spatial optimizing. This means that you should keep the polygon count as low as possible.
  • A new and faster channel called FastCollisionResponse is also available, we recommend you use this new channel from now on

Applications

Provide collision for simple walkthroughs.

Tips

Keep your collision objects as clean as possible. Interpenetrating polygons can cause the routine to get slow or produce inaccurate results.

Example

Creating collision detection

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


CollisionSphereCheck - Quest3D

CollisionSphereCheck

Contents

  • 1 CollisionSphereCheck
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

CollisionSphereCheck

General

CollisionSphereCheck

Children

  1. Sphere Position - Value Vector
    • Position of the sphere to check the collision with
  2. Sphere Radius - Value
    • Radius of the sphere to check the collision with
  3. Collision Objects - CollisionObject
    • Objects that need to be checked for collision with the configured sphere

Description

This channel will check if any of the linked CollisionObject children has collision with a sphere. This size of this sphere can be configured using the other children.

When collision is detected, this channel will set its value to the number of the object linked (starting at 1) and will remain zero when no collision is detected.

CallChannel

Calling this channel has no effect

Remarks

The first collision found will be used and the rest of the objects will not be checked.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


Command - Quest3D

Command

Contents

  • 1 Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Begin Scene
      • 1.3.2 End Scene
      • 1.3.3 Fillmode - Points
      • 1.3.4 Fillmode - Wireframe
      • 1.3.5 Fillmode - Solid
      • 1.3.6 Shademode - Flat
      • 1.3.7 Shademode - Gouraud
      • 1.3.8 Z-Buffer commands
      • 1.3.9 Anti Alias Commands
      • 1.3.10 Triangle Culling Commands
      • 1.3.11 Reset texture stages
      • 1.3.12 Enable stencil rendering
      • 1.3.13 Disable stencil rendering
      • 1.3.14 Set Viewport
      • 1.3.15 Disable texture filtering
      • 1.3.16 Enable texture filtering
      • 1.3.17 Resource Manager Discard Bytes
      • 1.3.18 Enable stencil rendering inverted
      • 1.3.19 Stop all Force Feedback effects
      • 1.3.20 Stop linked Force Feedback effects
      • 1.3.21 Multi Sample Type
      • 1.3.22 Force texture matrix
      • 1.3.23 Reset texture matrixes
      • 1.3.24 Set Enviroment Cubemap for HLSL
      • 1.3.25 Copy back buffer to texture
      • 1.3.26 Copy back buffer to texture streched
      • 1.3.27 Set Camera Matrix
      • 1.3.28 Set Clipping Plane
      • 1.3.29 Clear Clipping Planes
      • 1.3.30 Create Ocean Texture
      • 1.3.31 Create large image
      • 1.3.32 Add Nature Item
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

Command

General

Send a command to DirectX 8 to set it to a different state.

Children

  1. All Types Channel - Depends on the selected command

Description

This channel will send a command to DirectX to set DirectX to a different state. You can send the following commands:

Begin Scene

After a ClearScreen is used this command must be send to DirectX to set the start of a frame.

End Scene

This is send after all rendering has been done and must be send before Present.

Fillmode - Points

This will switch the fillmode to points.

Fillmode - Wireframe

This will switch the fillmode to wireframe.

Fillmode - Solid

This is the default fillmode. When set to another fillmode, you can reset DirectX to solid mode again.

Shademode - Flat

This will set the current shademode to flat.

Shademode - Gouraud

This will set the current shademode to Gouraud shading.

Z-Buffer commands

Z-Buffer Write On

Z-Buffer Write Off

When you want an object not to cut into another object that will be rendered after this object you could disable the writing of the Z-Buffer.

Z-Buffer Enable On

Z-Buffer Enable Off

This is useful when you want an object to always be on top.

Z-Buffer Clear

Clear the Z-buffer

Anti Alias Commands

Multi Sample Anti Alias On

Multi Sample Anti Alias Off

Set the anti alias setting On or Off if supported by the 3D card.

Triangle Culling Commands

Cull Triangles None

Cull Triangles Clockwise

Cull Triangles Counter Clockwise

Triangles that are turned away from the viewer can be discarded by the 3d card if desired (default Counter Clockwise). With these options the culling method can be changed.

Reset texture stages

Reset all texture stages

Enable stencil rendering

Enable the stencil rendering

Disable stencil rendering

Disable the stencil rendering

Set Viewport

You can set a different viewport with this command. You can link 4 value channels to this channel. The first two are the left top position of the viewport, and last two linked value children are the width and height of the viewport. All values are percentages of the screen, so use values in the range of 0.0 to 1.0

Disable texture filtering

Disable texture filtering will create a very pixel like texture effect by not interpolating between pixels

Enable texture filtering

Enable texture filtering will create a smooth ture effect by interpolating between pixels (default)

Resource Manager Discard Bytes

When you load a new scene in Quest3D and do not remove old channelgroups that where already rendered and had texture in them your scene might be very slow because of all texture management that is still done. By calling this command all managed textures are discarded which can generate a big speed increase. Use this command when loading a new scene in Quest3D when you already showed a 3d scene

Enable stencil rendering inverted

Invertes stencil rendering will allow you to use multiple lights that cast stencil shadow in your scene

Stop all Force Feedback effects

Will stop all current Force Feedback effects that are playing only the FFE files are stoped not the vector force

Stop linked Force Feedback effects

Will stop all linked Force Feedback channel effects that are playing only the FFE files are stoped not the vector force

Multi Sample Type

When a user selects that the application is able to control the antialias mode this option works. Multi sample type determines how many samples are taken to create 1 pixel. Typically this ranges between 1 and 6. If a 3d card does not support the higher chosen value the highest value available will be chosen. Link a value channel to the command with the desired multi sample count.

Force texture matrix

Link an objectdata channel which is used to force its texture matrix settings to be set on the 3d card.

Reset texture matrixes

Reset the texture matrixes to default. Use this after the Force Texture Matrix option.

Set Enviroment Cubemap for HLSL

Link a cubemap texture channel which is used as enviromental cubemap in HLSL scripts that use such a texture.

Copy back buffer to texture

Copy the current back buffer to a linked texture channel. This is done pixel perfect. If the texture is to small pixels are skipped. If the texture is to large only part of the texture is filled.

Copy back buffer to texture streched

Copy the current back buffer to a linked texture channel. The backbuffer will be stretched to fit exactly in the attached texture channel.

Set Camera Matrix

This option needs a world matrix which will be used as the current camera matrix by inverting the matrix and setting it as the VIEW matrix. This is the same action as the Camera chanel does.

Set Clipping Plane

This commands will activate a clipping plane based on the Motion linked the command. You need to call this command only once to set the clipping plane

Clear Clipping Planes

This command will remove the active clipping plane.

Create Ocean Texture

Creates a Float Texture to be use with the water render ????

Create large image

Create a large render output and saves it to disk. You need to link the scene you want to render, the image height and width and the file name.

Add Nature Item

With this command you can add nature paint items to the scene in runtime. You need to link a matrix to set the position as first child, the second child takes the NaturePainter channel of the nature paint item you want to add.

You can configure the command to execute through the properties window.

Just select a command and click OK to save the setting.

CallChannel

When called this channel will actually execute the configured command

Applications

  • Use if you want to render an object as a wire frame model
  • Use if you want to alter the Z-Buffer

Tips

  • Use a template to drag a complete 3D engine into the editor, this template includes the needed commands in the right order.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


Copy Image - Quest3D

Copy Image

Contents

  • 1 Copy Image
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Copy Image

General

This channel copies a texture to the screen in pixel perfect conditions. Also it can be used to copy parts of a texture to the screen.

This channel provides the best result to make 2D Graphic User Interface in your applications.

Children

  1. Texture - Texture
    • Source image
  2. Source Left - Value
    • Left coordinate of the source rectangle
  3. Source Top -Value
    • Top coordinate of the source rectangle
  4. Source Width -Value
    • Width the source rectangle
  5. Source Height - Value
    • Height of the source rectangle
  6. Dest Left- Value
    • Left coordinate of the destination rectangle
  7. Dest Top - Value
    • Top coordinate of the destination rectangle
  8. Dest Width - Value
    • Width of the destination rectangle
  9. Dest Height - Value
    • Height of the destination rectangle
  10. Color - Matrix
    • RGB Color values. The colors of the copied image are multiplied by these values
  11. Opacity - Value
    • Value between 0 and 1 that determines the transparency or opacity of the copied image

Description

This channel copies (a part of) an image to the screen. The image is copied in such a way that no pixels are interpolated when the source and destination rectangles have the same size. This operation is comparable to a blit operation.

The copy operation allows for coloration of the copied image. It also allows you to specify a transparency or opacity value. When the source image contains an alpha image, the alpha image will be used to determine the opacity.

CallChannel

Performs the copy operation of the texture to the screen.

Applications

Use this channel to display pixel perfect graphics such as logos, buttons, text or any other bitmap based graphics.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing


CopyTagDataToPointer - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

CopyTagDataToPointer

From Quest3D

Jump to: navigation, search

Function definition

void CopyTagDataToPointer(void* data);

Description

Copy data that was found with the previously called GetInfoIfTag function into the given pointer.

Parameters

Name | Description
data | Pointer to a variable that will be used as the target for the data that is loaded.

Return Value

Return true if the given tag is currently at the file pointer of the loaded file and false if not.

Remarks

This function should always be used after the GetInfoIfTag function has returned true. The size of the data that is retrieved and copied into the data parameters was previously saved with the A3dFileSaver class. Just make sure the variable of the data pointer has reserved enough space to hold all data. Advices is to correctly use tags while saving and loading.

Example

if (loader.GetInfoIfTag("TEST")) {
    loader.CopyTagDataToPointer(&testValue_);
}

In this example the loader class will return true if the TEST tag is currently at the file pointer position. It will then load data into the testValue variable. Please note that no data size setting is needed. This settings is saved and is automatically used. Just make sure the variable is large enough for the data saved.

Related Documentation

GetInfoIfTag, Loading and Saving

One Level Up - Channels

Back to Main Index


CreateCubeCameraMatrix - Quest3D

CreateCubeCameraMatrix

Contents

  • 1 CreateCubeCameraMatrix
    • 1.1 General
    • 1.2 Children
    • 1.3 Description

CreateCubeCameraMatrix

General

Set the camera so that a side of a cube texture can be rendered.

Children

  1. Camera - Camera
    • Original Camera
  2. CubeSide - Value
    • 0 - 6 value which cube side to use

Description

Set the camera so that a side of a cube texture can be rendered. First child is the original camera that is used. Second child is 0 - 6 which side of the cube you wish to render. Use this camera instead of your original to get the right perspective view for rendering the texture.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


CreateNewGroup - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

CreateNewGroup

From Quest3D

Jump to: navigation, search

Function definition

A3d_ChannelGroup* CreateNewGroup( const char* interfaceName, bool arrayGroup = false, int forcePosition = -1 );

Description

Creates a new channel group and return the pointer to this new group.

Parameters

Type | Name | Description
interfaceName | This name is also used as the interface name.
arrayGroup | Set this parameter to TRUE when the pool is an array and FALSE if not. This is an optional parameter and can be left out.
forcePosition | If this group is created as an array, you are able to select the position in the array with this integer. Set this parameter to -1 to let the engine figure it out. This is an optional parameter, if left out, the integer will be set to -1

Return Value

This function returns a pointer to the channel group that was created. When the function returns NULL, the channel group could not be created using the given parameters.

Remarks

This function is used to create a new channel group. By using this function the core engine will manager the memory of the channel group. It is recommended this function is always used when creating a new channel group.

A new channel group can also be placed in an array. With the arrayGroup and forcePosition parameters you are able to control how this array should be created. Channel groups that are loaded as an array can't be edited in the editor.

The given interfaceName can only be used once if the channel group is not an array.

Example

This is part of an importer channel. The overloaded function will create a new channel group and the YourImporterFunction will do something with it.

void Aco_Importer::ConvertFileToGroup(char* fileName, char* newPoolName) {
    A3d_ChannelGroup* channelGroup = NULL;

    // Check if the pool name is given
    if (newPoolName != NULL) {
        // Create the new channel group
        channelGroup = engine->CreateNewGroup(newPoolName);
        // Check if the channel group was created
        if (channelGroup != NULL) {
            // Use the created channel group for a function
            YourImporterFunction(channelGroup);
        }
    }

    return channelGroup;
}

One Level Up - EngineInterface

Back to Main Index


CubeTexture - Quest3D

CubeTexture

Contents

  • 1 CubeTexture
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

CubeTexture

General

Cube Texture used on a 3d object.

Children

  1. Alpha Texture - Texture
    • Only here for compatibility please don't use.
  2. Bumpmap Scale - Value
    • please don't use
  3. Load texture from file - Buffer
    • Buffer channel that can hold a texture.

Description

This cubetexture channel can load a special DDS picture from your hard disk and use it as a cubetexture. When you save the channelgroup the picture is saved within the CGR in the original format.

Specifying the alpha of the cube map as a second texture is not supported. The bump scale child also is not supported. The FX file material system provides a perfect alternative.

CallChannel

Will have no effect

Applications

Cubetextures are used when texture coordinates are used in 3d. Normal textures use UV sets. Cube textures use UVW. In most cases cubetextures are used in combination with a vertex or pixel shader since they can compute the correct texture coordinates. Also using the Cubemap reflection and Cubemap normal of the texture mapping properties will compute the correct coordinates without a shader.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing


Reference Manual/Editor/General/Database Monitor - Quest3D

Reference Manual/Editor/General/Database Monitor

< Reference Manual | Editor | General
Jump to: navigation, search

Database Monitor

(Quest3D Power and VR Edition only)

With this window you are able to monitor the used DB Source and DB Query channels in your current project.

With the first drop down list you are able to select a database source. The drop down list will show a list of all loaded DB Source channels in the currently loaded channel groups.

The lines below show the status of the connect, database and the number of tables. With the "Properties" button you are able to configure the selected channel. It will show the properties dialog of the selected DB Source channel.

The second drop down list will show a list of all loaded DB Query channels. When a channel is selected the lines below will show the status, the number of rows and columns in the retrieved data (if any) and the size of the query.

The "Properties" button will also show the channel properties dialog of the channel itself. This allows you to quickly select the correct query and edit it, or show the results.

One Level Up General

Back to Editor

Back to Main Index

Category: Editor


DB - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

DB

From Quest3D

Jump to: navigation, search

Function definition

void DB(const char * text);

or

void DB(const char * text1, const char* text2);

or

void DB(const char * text, int intValue);

or

void DB(const char * text, float floatValue);

or

void DB(int intValue);

or

void DB(DWORD dwValue);

or

void DB(float floatValue);

or

void DB(double doubleValue);

or

void DB(GUID guid);

Description

This will show a yellow text line (at the given line number) in the upper left corner of the 3D screen that is rendered. Every time the DX8 Present channel is called, this information is updated.

Parameters

Name | Description
text, text1, text2 | Constant NULL terminated string to debug
intValue | Integer value to debug
floatValue | Floating point value to debug
dwValue | DWORD variable that holds the value to debug
doubleValue | A double variable that holds the value to debug
guid | A GUID that is converted into a readable format for debug

Remarks

You are able to use any of the following functions. If you need to debug a different variable please type-cast it.

You are able to use this function through the global defined DB function so you will not need to use the full notation.

Example

Here a floating pointer value is debugged twice using both notations in a overloaded CallChannel function.

void Aco_Example3::CallChannel() {
    float floatValue = 1.345f;
    engine->errorMsg("Value: ", floatValue);
    DB("Value: ", floatValue);
}

Related Documentation

dMsg, iMsg, mMsg, eMsg

One Level Up - EngineInterface

Back to Main Index


DB Buffer - Quest3D

DB Buffer

Contents

  • 1 DB Buffer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

DB Buffer

General

Retrieve binary or large data from a table

Children

  1. Row Nr - Value
    • Row number to retrieve (always starts at zero)
  2. Field Nr - Value
    • Column / field number to retrieve (always starts at zero).

Description

With this channel you are able to retrieve (binary) data from the result of a query. After a query has been executed it is stored in memory. With this channel you are able to access to data that is stored directly.

You are able to select the row and column in the properties dialog or with by linked value channel to the child link positions.

The dialog will show a list of fields of all queries that are at least executed once. You are able to select a field (column) here. If a field (and query) is selected you are able to override the selected field by using the second child link position "Column Nr". You are also able to select a row by entering the row number or use the first child link position.

All changes to the children and in the dialog are reflected in the project immediately.

CallChannel

Will have no effect

Remarks

  • Please check if the field selection is still correct once a query has been changed because the output field name could be different.
  • Please note that all fields are listed in the dialog, also fields that output values. This makes it possible to change a value field into a text
  • Before the "Column Nr" child link position can be used a field must be selected in the properties dialog to select the correct query. Only the query setting of the selected field will be used when a channel is linked to the "Column Nr" child link position.
  • When no data is available the buffer will remain intact until the data is available.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB DriverMySQL - Quest3D

DB DriverMySQL

Contents

  • 1 DB DriverMySQL
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Remarks

DB DriverMySQL

General

MySQL Database driver for DB Source channel

Children

  1. Host - Text
    • Hostname (or IP address) where the MySQL database is located
  2. Port number (use 3306 if unkown) - Value
    • Port number of the MySQL database. If this channel is not linked, the default port number (3306) is used.
  3. Database - Text
    • The name of the database to connect to
  4. Username - Text
    • The username to use for the selected database and hostname.
  5. Password - Text
    • The password to use for the selected database and hostname.
  6. Connection Timeout - Value
    • Number of seconds to wait before the connection will time out. The connection will failed if the configured number of seconds elapses and no connection could be established.

Description

This channel is used as child for the DB Source channel. If linked, all channels that use the source this channel is linked to will communicate with a MySQL database.

This driver supports a native connection to a MySQL database. It can connect to one locally or over the Internet. The channel can be configured by linking children and setting them to the desired values.

When this channels parant is called, it will try to connect to the configured database.

Remarks

This channel needs a third party DLL file call "libmySQL.dll". Normally this file is located at the "3rd" folder of your Quest3D installation. Please always make sure the DLL file is present before publishing.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB DriverODBC - Quest3D

DB DriverODBC

Contents

  • 1 DB DriverODBC
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Remarks

DB DriverODBC

General

ODBC driver for DB Source channel

Children

  1. Database - Text
    • ODBC Data Source name
  2. Username - Text
    • Username used to login to the selected ODBC Data Source, leave empty for anonymous or none
  3. Password - Text
    • Password used to login to the selected ODBC Data Source, leave empty if no password is needed.
  4. Quest3D DB Name - Text
    • Unused

Description

This channel is used as child for the DB Source channel. If linked, all channels that use the source this channel is linked to will communicate with a ODBC database.

Using this channel you are able to use one of the many available ODBC drivers. A short list of supported database software:

  • Microsoft SQL Server
  • MySQL
  • racle
  • Microsoft Access
  • Microsoft Excel
  • Microsoft FoxPro
  • dBase

A large number of other database software developers also have ODBC support avaiable. When the correct driver is installed, Quest3D is able to communicate with the database.

You are able to configure the channel with the properties dialog and the channels. When the channel is double clicked the following properties dialog will open:

  • Prompt the user a database selection window - If the DB Source channel this channel is linked to is called a dialog will be show to the user where the user is able to select a database. After the user has selected a ODBC data source, the connection is attempted.
  • Connect with predefined connection string - Here you are able to compose a selection string that ODBC understands. With the "Configure..." button you are able to create one using a dialog.
  • Connect to the given ODBC source - Will allow you to select a pre-configured ODBC driver and a username and password. With the configure button you are able to configure one of the pre-defined ODBC drivers.
  • Use the channels linked for information - With this setting the children linked to this channel will be used to establish a connection.

Remarks

This channel is based on the ODBC 3.0 specifications. Please make sure you have the latest ODBC drivers installed for your database.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB Info - Quest3D

DB Info

Contents

  • 1 DB Info
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Database Connected
      • 1.3.2 Connection Status
      • 1.3.3 Query Status
      • 1.3.4 Query Done
      • 1.3.5 Number of tables
      • 1.3.6 Number of rows
      • 1.3.7 Number of columns
    • 1.4 Remarks

DB Info

General

Database status and information

Children

none

Description

You are able to retrieve information from a part of the current database channels. All information is retrieved in the form of a value and this channel is set to the retrieved information.

Database Connected

One if the selected database is connected and zero if not

Connection Status

Zero if the database connection is idle, one if the database is connected, two if the database is connecting and -1 if there was an error while connecting to the selected source

Query Status

Zero if the query is idle, one if the query is done, two if it is busy and -1 if the query failed

Query Done

One if the selected query was succesfully done and zero in all other cases.

Number of tables

Retrieves the number of tables in the current selected database

Number of rows

Retrieves the number of rows that was retrieved using the selected query

Number of columns

Retrieves the number of columns that was retrieved used the selected query

If needed you will need to select the correct source and query.

Remarks

When you change the name of a query, please make sure this channel is still configured correctly.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB Query - Quest3D

DB Query

Contents

  • 1 DB Query
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 SQL Queries
      • 1.3.2 Field Markers
      • 1.3.3 Retrieving Data
    • 1.4 CallChannel
    • 1.5 Remarks

DB Query

General

Compose and execute a SQL query

Children

  1. SQL Query - Text
    • The SQL query to execute
  2. Input - All Types Channel
    • Fields that should replace the field markers in the query.

Description

With this channel you are able to compose a SQL statement. You are able to compose the SQL query through the dialog or by linking a child to the first child link position.

  • Select source to execute query on - In this drop-down list you are able to find all DB Source channels in the current loaded project. A source must be selected before a query can be executed.
  • Name of this query - Enter here the name of the query. This name is used by a number of different database channels to select and visualize the correct selected query. If you are using multiple queries in a project make sure you select a unique description.
  • Rename Channel - When this checkbox is checked, the name of this channel will be changed when the "Name of this query" field is changed. This could be useful if a number of queries are placed next to each other.
  • Actual query - In this text box you are able to compose a SQL query. How this query is formatted is up the used source and used driver. There are a number of special characters you are able to use. Please see below for more information about queries using this channel.
  • Execute - When this button is clicked the entered query is executed.
  • Insert Field - This button will insert a field marker when a channel from the drop down list next to this button was selected. A field marker can be used to insert data from a linked child into the query. The field marker will be replaced by the content of the channel when the query is executed, not visible to the user.
  • Background query - When this options is activated the entered query will be executed as a separate process so the whole project will keep running while the query is executed. When the application is closed while a large query is being executed you might end up with unwanted behaviour.
  • Show debug information - When this option is checked some extra debug information is generated to allow the user to create a correct SQL statement
  • Results - When this button is clicked a new window will be opened that will show all results of the query that was executed. This can be useful when the query should be checked for the correct results

SQL Queries

You are allow to enter any SQL statement, including SELECT, INSERT, UPDATE and DELETE. The limit of the SQL statement is determined by the database selected. A database can be seleted by using a DB Source channel and linking a "DB Driver" channel to this channel. There are currently two different drivers available that support almost any database.

Please take a look at the documentation of your database how to compose a correct SQL statement. If values or text from channels should be used to insert or delete data you are able to use field markers (see below).

Field Markers

You are able to use the content of a channel in a query. This can be done by first linking a channel to this channel and then placing the correct field marker. When a channel is linked and the properties dialog is opened you are able to select the linked channel from the drop down list right of the "Insert field:" button. Once selected click on this button to insert a field marker. A field marker looks a like this: $$1$$ The number in between the $ characters is the child number that is linked (starting at one). Please note the field starts and ends with two $ characters. When the query is executed this whole string is replaced by the value in the linked channel. There are a number of different channels you are able to link with a number of different results:

  • Value channel - The value of this channel will be used to replace the field marker. Please note that the value is a floating point value.
  • Text channel - The text stored in this channel we be used to replace the field marker. Please note the text is escaped, so all special characters will be correctly converted.
  • Buffer channel - The content of this channel will be inserted into the query, even binary data. This makes it possible to insert complete files (pictures, HTML, etc.) into a database. Please make sure the database table is correctly configured. With the SaveChannelToBuffer channel you are even able to save the settings of a channel into a buffer and then store it in the database (think of a texture or object data).

Retrieving Data

When the entered query is retrieving data from the database, the entire result is stored and can be accessed by a number of channels.

  • DB Value channel - This channel will converter a selected field and row into value. This channel is often used for floating point and integer fields.
  • DB Text channel - This channel is able to represent a piece of the retrieved data in the form of a text (string). The selected row and field will be copied into the channel. This channel is often used when a description, name or other field should be retrieved.
  • DB Buffer channel - This channel is used for retrieving files, binary data or channel settings. Together with the LoadBufferIntoChannel buffer you are able to change the settings of a channel. You are able to change a texture or object data for example. Often used with BLOB field types in the database.

CallChannel

When called the configured SQL statement will be executed and the query is started.

Remarks

  • This channel is just able to compose a SQL string. It will not check if it is a valid string. The DB Source channel that is used by the query will pass it to the linked driver and this will check if the query was valid. If not, the query will fail.
  • If using field markers please also make sure you correctly use the " or ' character if the inserted data is not a value

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB Source - Quest3D

DB Source

Contents

  • 1 DB Source
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Remarks

DB Source

General

Database source that is used for all database communication.

Children

  1. Database Driver Channel - DB DriverBase
    • The database driver channel that should be used for as actual source.

Description

This channel is the entry point for all database channels. You are able to select a database source for a query so it can be executed on the correct database.

A single child must be linked and will configure what database driver should be used. Currently there are two database drivers available:

  • DB DriverMySQL
  • DB DriverODBC

The first and only child link position of this channel will accept one of these (or in the future new released) database driver channels.

Remarks

Once a database driver channel is linked and configured this channel can be called to connect the database.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB Text - Quest3D

DB Text

Contents

  • 1 DB Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

DB Text

General

Retrieve a text from a query result

Children

  1. Row Nr - Value
    • Row number of the result of a executed query (starting at zero)
  2. Field Nr - Value
    • Column (field) number of the restult of a query (starting at zero)

Description

With this channel you are able to retrieve a text (string) from the result of a query. After a query has been executed it is stored in memory. With this channel you are able to select a row and column and convert this part into a text that can be used by Quest3D. The string will be stored in this channel.

You are able to select the row and column in the properties dialog or with by linked value channel to the child link positions.

The dialog will show a list of fields of all queries that are executed at lease once. You are able to select a field (column) here. This needs to be done before the second child link position can be used. You are also able to select a row by entering the row number or use the first child link position.

All changes to the children and in the dialog are reflected in the project immediately.

CallChannel

Will have no effect

Remarks

  • Please check if the field selection is still correct once a query has been changed because the output field name could be different.
  • Please note that all fields are listed in the dialog, also fields that output values. This makes it possible to change a value field into a text
  • Before the "Column Nr" child link position can be used a field must be selected in the properties dialog to select the correct query. Only the query setting of the selected field will be used when a channel is linked to the "Column Nr" child link position.

Tips

The most common use of this channel is to select a field (column) through the properties dialog and link a value to the first child link position so you are able to select the correct row with any logic.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


DB Value - Quest3D

DB Value

Contents

  • 1 DB Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

DB Value

General

Retrieve a value from a query result

Children

  1. Row Nr - Value
    • Row number of the result of a executed query (starting at zero)
  2. Column Nr - Value
    • Column (field) number of the restult of a query (starting at zero)

Description

With this channel you are able to retrieve a value from the result of a query. After a query has been executed it is stored in memory. With this channel you are able to select a row and column and convert this part into a value. This channel is set to the value that is retrieved.

You are able to select the row and column in the properties dialog or with by linked value channel to the child link positions.

DB Value Properties window

The dialog will show a list of fields of all queries that are at least executed once. You are able to select a field (column) here. If a field (and query) is selected you are able to override the selected field by using the second child link position "Column Nr". You are also able to select a row by entering the row number or use the first child link position.

All changes to the children and in the dialog are reflected in the project immediately.

CallChannel

Will have no effect

Remarks

  • Please check if the field selection is still correct once a query has been changed because the output field name could be different.
  • Please note that all fields are listed in the dialog, also fields that output text only. This makes it possible to change a text field with a value into a value
  • Before the "Column Nr" child link position can be used a field must be selected in the properties dialog to select the correct query. Only the query setting of the selected field will be used when a channel is linked to the "Column Nr" child link position.

Tips

The most common use of this channel is to select a field (column) through the properties dialog and link a value to the first child link position so you are able to select the correct row with any logic.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Database


Reference Manual/Editor/General/Debug window - Quest3D

Reference Manual/Editor/General/Debug window

< Reference Manual | Editor | General
Jump to: navigation, search

Contents

  • 1 Debug window
    • 1.1 General
    • 1.2 Description
    • 1.3 Remarks
    • 1.4 E Button
    • 1.5 I Button
    • 1.6 D Button
    • 1.7 Clear Debug Button

Debug window

General

Shows and controls debug, error and information messages

This window is no longer part of the default interface, and is for advanced use, or developers only. Use the Message Log message for all user messages. The Message Log is part of the default interface, and is placed in the bottom of every section.

Description

Displays a list of messages that are encountered using Quest3D. There are three different kind of messages:

  • Error messages

These messages are displayed when a taken action fails. These messages are displayed in red.

  • Debug messages

When an action has debugging information it will display these messages in blue.

  • Information messages

When an action succeeded or some user feedback was needed, then these messages are displayed in black.

All messages are also saved in the "error.log" file that can be found in the installation directory of Quest3D. The date and time is then also added.

Remarks

This window was created originally for troubleshooting the first versions of Quest3D but is kept to aid you while using the program.

All information is also displayed in the Message Log bar at the bottom of every section in the Quest3D editor window.

There is a maximum number of messages that the window can hold. Lines are purged on a first in first out basis.

E Button

Toggle displaying of error messages on/off With this button you are able to control the debug messages that appear. With the E button you can suppress the error messages generated. Error messages are displayed when a taken action fails. These messages are displayed in red.

I Button

Toggle displaying of information messages on/off With this button you are able to control the information debug messages that appear in the debug window. When an action has some general information to share, it will display these lines in black.

D Button

Toggle displaying of debug messages on/off With this button you are able to control the debug messages that appear. With the D button you can suppress the debug messages generated. When an action has general debugging information, it will display these messages in blue.

Clear Debug Button

Clears all the messages When this button is pressed, the messages that are currently in the debug message window are cleared from the window. Please note that the "error.log" file that is in your installation directory will still have those lines saved.

One Level Up General

Back to - Editor

Back to Main Index

Category: Editor


DebugOutput - Quest3D

DebugOutput

Contents

  • 1 DebugOutput
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

DebugOutput

General

Show a value as debug information

Children

  1. Test Value - Value
    • Value to display
  2. Debug Position - Value
    • Row to display the debug value

Description

This channel will display the linked value child as debug information. This debug information is displayed on top of your scene in the upper left corner. If you want multiple lines of debug information use the second child to set to another value.

Before the value is displayed to name of the value channel linked is displayed in front of the value.

The channel will set itself to the value of the first linked child "Test Value".

CallChannel

Will have no effect

Remarks

  • This channel will only work when the Act-3D\Quest3D registry key "Show_Debug" is set to "true".

You can activate it by running the Registry Editor (cmd line regedit) got the HEKY_LOCAL_MACHINE>SOFTWARE>Act-3D>Quest3D and the you see the main version number like 3.00.000. Here you add a String Value, name it Show_Debug and set it to True. Next time you start Quest3D the debug info will be shown. You can do the same for the Viewer.

  • The "Debug Position" child value can't be set to 0, because the frame rate counter is displayed here

Applications

Place this channel between a value and its parent to debug the value of that parent.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


DeleteChannelGroup - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

DeleteChannelGroup

From Quest3D

Jump to: navigation, search

Function definition

void DeleteChannelGroup(int index);

Description

Remove a channel group from memory.

Parameters

Name | Description
index | Number of the channel group

Remarks

This function can be used to force a channel group to be removed from memory. Normally the core engine will take care of removal of channel groups.

If a channel group is loaded a number is assigned to it. This is an incremental number. With the index parameter you are able to select the channel group.

Related Documentation

GetChannelGroupCount, GetChannelGroup

One Level Up - EngineInterface

Back to Main Index


DepthSortRender - Quest3D

DepthSortRender

Contents

  • 1 DepthSortRender
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

DepthSortRender

General

Render 3D objects with the current camera or the camera linked to the first child with the lights that are linked to this render and sort transparent objects on position.

Children

  1. Camera to Use - Camera
    • Camera to use for rendering the objects.
  2. Objects - 3D Object
    • Objects to render.
  3. Lights - Light
    • Lights you want to use while drawing the objects.
  4. Object Culling Distance - Value
    • Distance after which objects will not be drawn.

Description

This channel is used to draw 3D objects. When you call this channel all the objects are rendered to the backbuffer that can be copied to the screen by the Present. The difference from normal 3D Render channel is that this version also sorts the transparent objects on distance from the camera. Removing the strange effects that can happen when two transparent objects are rendered over eachother.

A value channel can be added to remove objects positioned after a certain distance from the camera.

CallChannel

Calling this channel will render all the 3D Object channels that are connected to this channel. It will use the camera that is attached to this channel. With the Lights that are also attached to this channel.

It is possible to render objects without attaching cameras and lights. In this case it will use the camera and lights that are set and enabled at the point you call this channel.

Remarks

This channel does not render the object itself but it tells the object to render themselves. In practice you won't notice this. It just allows the objects to determine how they should render themselves.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Detect3DSettings - Quest3D

Detect3DSettings

Contents

  • 1 Detect3DSettings
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Detect3DSettings

General

Detects if Directx 9.0c is installed on the system.

Children

none

Description

This channel will set its value to the version number of Microsoft DirectX that is currently installed. In the current version of Quest3D there are a large number of channels that require DirectX 9.0c. Before any user with a Quest3D viewer can use these channels you can check if the user has this version of DirectX installed.

There is an example included with Quest3D that will show you how to first check the current version of Quest3D and then load the next channelgroup dynamically.

CallChannel

Will have no effect

Remarks

Use this channel in a channelgroup without any other channel that requires any version of DirectX. If a channel is used that requires a version of DirectX that is not installed the whole channelgroup will fail to start and this channel will never be reached. Make sure no channel in this channelgroup is a public call channel that has the auto load option turned on. This will in almost all cases result in directx 9.0c needed before you can make the check. A proper way of handling this is to load the channelgroups that follow dynamically after the check is true.

Applications

Check to see if the user has the correct version of DirectX installed.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | Commands and Settings


DetectMouseCollision - Quest3D

DetectMouseCollision

Contents

  • 1 DetectMouseCollision
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

DetectMouseCollision

General

Detects if the mouse cursor is over an object.

Children

  1. 3D Object - 3D Object
    • The object you want to check for 'mouse over'.

Description

Link an object to this channel to detect if the mouse is over the object or not. If the mouse is over the object this channel is 1.0 and it is 0.0 otherwise.

CallChannel

Calling this channel has no effect.

Remarks

There is no special optimising so you should keep the polygon count as low as possible.

When using multiple viewports and you wish to use detect mouse collision in a specific port make sure at the time this channel calculates the right viewport and camera are set. You can do this by calling the right camera and viewport and this channel at the beginning of your frame.

Applications

Used for 3D controls such as sliders, buttons, rollovers etc..

Tips

  • To reduce the number of polygons you are using for this channel you can often use a simpler shapes than the object that is visible. Very often a simple box or square is enough.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision | UserInput


SDK/Dialogs - Quest3D

SDK/Dialogs

< SDK(Redirected from Dialogs)
Jump to: navigation, search

General topics

Introduction

Class reference

ChannelDialog Base class of all channel dialogs.

Back to Main Index


SDK/Dialogs - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Dialogs

From Quest3D

< SDK
Jump to: navigation, search

General topics

Introduction

Class reference

ChannelDialog Base class of all channel dialogs.

Back to Main Index


DMsg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

DMsg

From Quest3D

Jump to: navigation, search

Function definition

void dMsg(const char * text);

or

void dMsg(const char * text1, const char* text2);

or

void dMsg(const char * text, int intValue);

or

void dMsg(const char * text, float floatValue);

or

void dMsg(int intValue);

or

void dMsg(DWORD dwValue);

or

void dMsg(float floatValue);

or

void dMsg(double doubleValue);

or

void dMsg(GUID guid);

Description

Add a debug message to the error.log file and to the debug message window. This line will be shown in blue in the debug window and will be prefixed with the "DEBUG" string in the error.log file.

Parameters

Name | Description
text, text1, text2 | Constant NULL terminated string to debug
intValue | Integer value to debug
floatValue | Floating point value to debug
dwValue | DWORD variable that holds the value to debug
doubleValue | A double variable that holds the value to debug
guid | A GUID that is converted into a readable format for debug

Remarks

You are able to use any of the following functions. If you need to debug a different variable please type-cast it.

You are able to use this function through the global defined dMsg (note the first character is a lower case character in stead of the upper case) so you will not need to use the full notation.

Example

Here a floating pointer value is debugged twice using both notations in a overloaded CallChannel function.

void Aco_Example3::CallChannel() {
    float floatValue = 1.345f;
    engine->DMsg("Value: ", floatValue);
    dMsg("Value: ", floatValue);
}

Related Documentation

Debug, iMsg, mMsg, eMsg, Debugging

One Level Up - EngineInterface

Back to Main Index


DoDependencyInit - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

DoDependencyInit

From Quest3D

Jump to: navigation, search

Function definition

void DoDependencyInit(A3d_List* dependList);

Description

Add dependencies for this channel. Dependencies can either be other Channels or DLL files that are redistributed in the <Quest3D>/3rd directory. Such files can be device drivers, framework DLLs, etc.

Parameters

Name | Description
dependList | A pointer to a A3d_List class that holds all dependencies of the channel group

Remarks

You must overload this function when you want your channel to have dependencies. You are able to add dependencies with other channels or dependencies with third party file. This function is used by Quest3D when a project is published. If you include a library or special code that requires a special DLL file you should overload this function.

With the AddChannelGuidDepend function you are able to add dependencies to other channels.

With the AddDLLDepend function you are able to add dependencies to other files.

Related Documentation

AddChannelGuidDepend, AddDLLDepend


DoEvent - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

DoEvent

From Quest3D

Jump to: navigation, search

Function definition

void DoEvent(int eventID, DWORD eventInfo);

Description

Called by the core engine when an event was added to the event system

Parameters

Name | Description
eventID | Integer value holding the type of event
eventInfo | The actual message or event information in a DWORD.

Remarks

This function should be overloaded when the channel should react to a event. Before the core engine event system will call this channel function you will need to use the AddChannelToEvent function of the core engine. You can use this function in the constructor of your channel. Please do not forget to call the RemoveChannelFromEvent function when the event system is no longer needed. Please this function in the constructor of your channel to make sure it is called.

The eventID parameter integer is set by the engine to the type of event. For a list of events please see the AddChannelToEvent function.

The eventInfo is a DWORD that holds more information about the event. In case of a EV_WINDOWMESSAGE this is a pointer to a MessageInfo struct.

Example

In this example you see the overloaded DoEvent function handling a received Windows message.

// The AddChannelToEvent function is called in the constructor and the
// RemoveChannelFromEvent is called in the destructor of this channel.
void Aco_Example4::DoEvent(int eventId, DWORD eventInfo) {
    // Struct that holds windows message information
    MessageInfo *messageInfo;

    if (eventId == EV_WINDOWMESSAGE) {
        // Point to the structure received
        messageInfo = (MessageInfo*)eventInfo;
            // Check for the correct message
            if (messageInfo->messageId == WM_KEYDOWN) {
                // Use a function to handle the key
                HandleKeyDownMessage(messageInfo->wparam, messageInfo->lparam);
            }
        }
    }
}

Related Documentation

AddChannelToEvent core engine function, RemoveChannelFromEvent core engine function, MessageInfo Struct

One Level Up - A3d Channel

Back to Main Index


DynamicLOD - Quest3D

DynamicLOD

Contents

  • 1 DynamicLOD
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

DynamicLOD

General

Reduces the geometry complexity dynamically over distance.

Children

  1. Source ObjectData - 3D ObjectData
    • Mesh to simplify.
  2. DLOD wanted levels - Envelope
    • Envelope that graphs complexity over distance.

Description

This channel measures the distance between the current world and the camera. It reduces the complexity of the geometry based on a graph that can be linked to the second child link position.

The DLOD detail level graph

The horizontal axis represents the distance between the camera and the object and the vertical axis is a value between 0.0 and 1.0 that indicates the complexity of the geometry. A value of 0.0 results in the simplest complexity and a value of 1.0 results in the original model.

The DLOD channel can be used just like any other 3D ObjectData.

CallChannel

Calling this channel renders the geometry with the current camera, light and world matrix.

Remarks

  • Because this is an dynamic channel it is not advised to combine it with channels that need to update their data structure when the source geometry changes(Character Skinning for example).
  • You should only use this channel for reducing complexity with distance and should be linked to a surface directly in most cases. You cannot use this channel as the particle emitter source for example.
  • The vertices and polygons will not be added to the vertex count and polygon count

Applications

This channel can reduce the detail for all objects in the distance where lack of detail is less obvious. This results in less polygons and vertices and improves performance.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Reference Manual/Editor/Animation Section/Dynamics Settings - Quest3D

Reference Manual/Editor/Animation Section/Dynamics Settings

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Dynamics Settings
    • 1.1 General
    • 1.2 Selecting bodies
    • 1.3 Working with bodies
    • 1.4 Working with joints
    • 1.5 Ball and socket
    • 1.6 Hinge
    • 1.7 Slider
    • 1.8 Hinge2
    • 1.9 Other settings

Dynamics Settings

General

With this window you can perform all important operations for the rigid body physics simulation system.

Selecting bodies

At the bottom of this window you find a list of all ODE Body channels and ODE Joint channels. You can select them by clicking on their name. The selected joint or body is also highlighted in the 3D view.

Working with bodies

The settings for bodies are the same as in their dialog box. Look here:ODE Body for more information.

When you select a body, it is highlighted in blue in the 3D view. Also make sure you select the correct sub-object of the body. You can select a sub object in the drop down list at the top of the screem. You can now move, rotate and scale the sub object just like all other objects in Quest3D. Use the 'move', 'rotate' and 'scale' below the dynamics settings window.

To change the position of a body, you need to change its initial position matrix.

Working with joints

In this window you can only change the propertie for a joint. Connecting joints to bodies has to be done in the channel editor. Just link the two bodies you want to connect to the joint channel.

When you have selected a joint, you can change its initial position and orientation. You can use the buttons below the dynamic window for this. Each joint type has different settings:

Ball and socket

With this joint you can only change the position of the rotation point. Rotating and scaling has no effect.

Hinge

This joint works the same as the 'ball and socket' joint. The only difference is that the rotation is limited along one axis. You can move the rotation point and you can rotate the axis of orientation. Sizing has no effect.

Slider

This joint only has a rotation. The position is always the center between the two bodies. This joint lets two bodies slide along each other in one direction. The position of the joint is irrelevant. For interface purposes it would be nicer to be able to change its position. You should expect this in a future version.

Hinge2

This is a very special joint type because it has two rotation axis. You can move the joint and you can rotate the two rotation axis. You can select the axis with the two radio buttons above the selection list.

Other settings

Click the 'Properties' button to change the properties of a joint. You can change the joint type and edit settings like rotation limits here.

(More information about ODE rigid body physics simulation is available here.)

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Reference Manual/Editor - Quest3D

Reference Manual/Editor

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Editor
    • 1.1 General Windows
    • 1.2 Channels Section Windows
    • 1.3 Animation Section Windows
    • 1.4 Object Section Windows
    • 1.5 Arrays Section Windows
    • 1.6 Nature & Pathfinding Section Windows
    • 1.7 Object Orientation

Editor

General Windows

Documentation on windows that are used throughout Quest3D. These can be used in any section of the editor.

  • General

Channels Section Windows

This section will allow you to actually design the logic of your project. There are a number of windows that will help you designing your project fast.

  • Channels Section

Animation Section Windows

You can animate your objects, camera's and lights in this section using the different windows and controls that are available.

  • Animation Section

Object Section Windows

You can add a texture or change the colors of an object in the object section. There are a number of windows with a large number of settings that can be applied to an object.

  • Object Section

Arrays Section Windows

In this section you are able to find a number of windows that will make the array editing easier.

  • Arrays Section

Nature & Pathfinding Section Windows

A number of windows in this section will help you with the nature painting system and creating 3D Graphs for the path finding system.

  • Nature & Pathfinding Section

Object Orientation

  • OO Editor The editor to create and manage interface and class definitions
  • Project Tree Tree to navigate through channelgroups, interfaces and interface members as well as drag/drop functions for the ChannelEditor

Back to Main Index

Categories: Reference Manual | Editor


Reference Manual/Customization/Editor lay-out - Quest3D

Reference Manual/Customization/Editor lay-out

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Editor lay-out
    • 1.1 General
    • 1.2 Sections
    • 1.3 Layout
    • 1.4 Save Workspace
    • 1.5 Special Windows

Editor lay-out

General

Quest3D has a modular graphical user interface. This means that you can rearrange the layout of the editor to your own preference.

Sections

By default Quest3D is divided into five sections:

  • Channels
  • Object
  • Animation
  • Arrays
  • Nature / Pathfinding

You can switch to other sections by pressing the F2-F6 keys. You can also use the menu to switch between sections. A custom section is called a desktop. You can add and remove desktops by using the options/editor section menu. If you create a new desktop you are prompted to give a name for the new desktop.

You can also load and save the layout of a desktop. It’s possible to load and save your own desktops and it is possible to load and save the default desktops (sections).

If you create a new desktop it is empty by default. To build your interface you need to add windows to it.

Layout

To configure the layout of the Quest3D editor you will need to activate the GUI config mode. Once the editor is in GUI config mode you can create new windows, delete windows and change their size.

The editor interface is arranged in rectangles. Each rectangle can hold any Quest3D editor window. To change the window in a rectangle you can select ‘window type’ in the context menu (right mouse button). Make sure the pointer of the mouse was in the correct window when you press the right mouse button.

To create a new window you need to split an already existing window. You can split an existing window horizontally or you can split it vertically. The new window is either created below the existing window or to the right.

You can merge two windows by selecting merge window/up, down, left, right from the context menu. You can only merge two windows if their two rectangles form one bigger rectangle. This means that the edges of the windows need to be aligned before you can merge them.

You can resize windows by dragging their edges. The mouse pointer changes into a double pointer as soon as the mouse is above an edge. Windows can also be resized if the editor is not in GUI config mode. Dragging an edge beyond the opposite edge of the window has no effect.

Save Workspace

You can save your entire workspace as the default workspace or have it loaded when loading a project. This can be useful when you have a custom interface for a specific project you are working on.

Use the "File" -> "Workspace" menu to save your workspace as a .QPF file. You can open the workspace by choosing "Open Project..." from the "File" menu and selecting the .QPF file.

If you use the "Save Default Settings" entry in the "Options" menu, the new configuration will be saved as the default layout. The next time you start Quest3D it will look as last saved.

Special Windows

There are three special windows you can add: The toolbar window, the tab window and the plugin tools window. The toolbar allows you to select a custom set of tool buttons. To customize the toolbar window you can select customize.. from the context menu. Make sure the editor is not in GUI config mode or you will not be able to bring up the context menu of the toolbar.

The second window is the tab window. The tab window allows you to switch another window by pressing tabs.

The plugin tools window allows you to select a range of plugins. Each plugin shows up as a button. You can apply a tool by selecting a channel in the channel graph and pressing the button.

Back to Main Index

Categories: Reference Manual | Editor


EMsg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

EMsg

From Quest3D

Jump to: navigation, search

Contents

  • 1 eMsg
    • 1.1 Function definition
    • 1.2 Description
    • 1.3 Parameters
    • 1.4 Remarks
    • 1.5 Example
    • 1.6 Related Documentation

eMsg

Function definition

void eMsg(const char * text);

or

void eMsg(const char * text1, const char* text2);

or

void eMsg(const char * text, int intValue);

or

void eMsg(const char * text, float floatValue);

or

void eMsg(int intValue);

or

void eMsg(DWORD dwValue);

or

void eMsg(float floatValue);

or

void eMsg(double doubleValue);

or

void eMsg(GUID guid);

Description

Add a debug error message to the error.log file and to the debug message window. This line will be shown in red in the debug window and will be prefixed with the "ERROR" string in the error.log file.

Parameters

Name | Description
text, text1, text2 | Constant NULL terminated string to debug
intValue | Integer value to debug
floatValue | Floating point value to debug
dwValue | DWORD variable that holds the value to debug
doubleValue | A double variable that holds the value to debug
guid | A GUID that is converted into a readable format for debug

Remarks

You are able to use any of the following functions. If you need to debug a different variable please type-cast it.

You are able to use this function through the global defined eMsg (note the first character is a lower case character in stead of the upper case) so you will not need to use the full notation.

Example

Here a floating pointer value is debugged twice using both notations in a overloaded CallChannel function.

void Aco_Example3::CallChannel() {
    float floatValue = 1.345f;
    engine->errorMsg("Value: ", floatValue);
    eMsg("Value: ", floatValue);
}

Related Documentation

DB, dMsg, iMsg, mMsg, Debugging

One Level Up - Quest3D Core Engine

Back to Main Index


SDK/Quest3D Core Engine/EngineInterface - Quest3D

SDK/Quest3D Core Engine/EngineInterface

< SDK | Quest3D Core Engine(Redirected from EngineInterface)
Jump to: navigation, search

EngineInterface

Class Information

Class name: EngineInterface

Header file: A3d_EngineInterface.h

Library file: highpoly.lib

Methods

GetInstallDir | Retrieve the current set installation or startup directory setting
GetEngineClassName | Retrieve the class name
GetEngineInstance | Retrieve the HINSTANCE
GetWindowHandle | Retrieve the HWND
GetTreeCalculateCount | Retrieve the current tree count value
SetTreeCalculateCount | Change the current tree count value
CreateNewGroup | Create a new channel group or add a channel group to a pool
GetChannelGroup | Retrieve a channel group already loaded
GetPoolGroup | Retrieve a channel group by name
LoadChannelGroup | Load a channel group from disk
GetHighInstance | Retrieve the highest instance number in a pool
DeleteChannelGroup | Remove a channel group from memory
GetChannelGroupCount | Retrieve the number of loaded channel groups
InitChannelFromType | Create and initialize a new channel and return the pointer
GetUniqueChannel | Retrieve (and created when needed) a pointer to a unique channel
AddChannelToEvent | Add a channel to the event system of the engine
RemoveChannelFromEvent | Remove a channel from the event system
dMsg | Add debug information to the error.log and debug window
iMsg | Add debug information to the error.log and debug window
mMsg | Show a pop up window with debug information
eMsg | Add error debug information to the error.log and debug window
DB | Show debug information in the 3D output screen

One Level Up - Quest3D Core Engine

Back to Main Index


SDK/Quest3D Core Engine/EngineInterface - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Quest3D Core Engine/EngineInterface

From Quest3D

< SDK | Quest3D Core Engine
Jump to: navigation, search

EngineInterface

Class Information

Class name: EngineInterface

Header file: A3d_EngineInterface.h

Library file: highpoly.lib

Methods

GetInstallDir | Retrieve the current set installation or startup directory setting
GetEngineClassName | Retrieve the class name
GetEngineInstance | Retrieve the HINSTANCE
GetWindowHandle | Retrieve the HWND
GetTreeCalculateCount | Retrieve the current tree count value
SetTreeCalculateCount | Change the current tree count value
CreateNewGroup | Create a new channel group or add a channel group to a pool
GetChannelGroup | Retrieve a channel group already loaded
GetPoolGroup | Retrieve a channel group by name
LoadChannelGroup | Load a channel group from disk
GetHighInstance | Retrieve the highest instance number in a pool
DeleteChannelGroup | Remove a channel group from memory
GetChannelGroupCount | Retrieve the number of loaded channel groups
InitChannelFromType | Create and initialize a new channel and return the pointer
GetUniqueChannel | Retrieve (and created when needed) a pointer to a unique channel
AddChannelToEvent | Add a channel to the event system of the engine
RemoveChannelFromEvent | Remove a channel from the event system
dMsg | Add debug information to the error.log and debug window
iMsg | Add debug information to the error.log and debug window
mMsg | Show a pop up window with debug information
eMsg | Add error debug information to the error.log and debug window
DB | Show debug information in the 3D output screen

One Level Up - Quest3D Core Engine

Back to Main Index


Envelope - Quest3D

Envelope

Contents

  • 1 Envelope
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Mouse Modes
      • 1.3.2 Controlling the view
      • 1.3.3 Manipulating keys
      • 1.3.4 About TCB interpolation
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips
    • 1.8 Example

Envelope

General

A key framed graph.

Children

  1. Float - Value
    • Input value of an envelope. You can use a Timer Value for multiple timers

Description

The envelope dialog

Here you see a picture of the envelope dialog. An envelope is a graph that has an output value for each input value. You can use the envelope editor to edit the graph.

Mouse Modes

Buttons to switch modes

Above you see four buttons to switch between mouse modes.

  • When you are in the create mode you can click in the graph window to create a new key.
  • When you are in the select mode you can click keys to select them or you can drag a rectangle to select multiple keys at once. To add the selection to the keys that where already selected you can press the CTRL key.
  • When you are in the move mode you can move keys by clicking on them and dragging the mouse while holding a mouse key. Holding the left mouse key will drag the key(s) horizontally. Holding the right mouse key will drag the key(s) vertically.
  • When you are in the delete mode you can click a key to delete it.

Controlling the view

Buttons to control the view.

These buttons allow you to control the view. With the two buttons on the left you can zoom the view to the entire envelope or only the selected keys. On the right there are two button that you can use to zoom or move the view. You can constrain axis by toggling the 'x' and 'y' buttons.

Manipulating keys

Controls to control the keys

You can create a new key by pressing the 'New Key' button. You can delete all selected keys by pressing the 'Del Key' button. The two arrow buttons allow you to cycle trough the keys.

There are two value boxes that contain the values for the key. The upper box contains the input value and the lower box contains the corresponding output value.

At the bottom you can select the interpolation type for the selected key(s). An envelope automatically calculates the values that are between keys. There are several methods for doing this:

Step interpolation(no interpolation)

Step

This method always uses the value at the position before the input value.

Lineair interpolation

Linear

This method draws a line between keys to calculates the value that is between them.

TCB interpolation

TCB

This method results in a smooth curve and it has 3 parameters at each key to control the shape of the curve.

You can select the method of interpolation for the selected key(s) by pressing one of the three curve type buttons. When you insert a new key the new key will use the interpolation of the button that is toggled. The button shows the interpolation that is used for the first key before the input position.

About TCB interpolation

The tension, continuity and bias buttons

When a key uses TCB interpolation you can drag the T,C and B buttons to alter the shape of the curve.

T (tension)

Effect of tension

Tension determines how the curve should alter its shape by looking at its neighbor keys. A tension of 1 ensures the velocity is 0 at the key. In this case velocity decreases towards the key and increases after the input of the envelope passed the key. A tension of 0 will result in a smooth curve. A tension of –1 will exaggerate the shape of the curve. With a tension of –1 the speed increases towards the key and decreases past the key. In short, the tension allows you to tweak how much the curve responds to the positioning of the keys.

C (continuity)

Effect of Continuity

A continuous curve has a velocity that smoothly varies along the curve. With the continuity parameter you cam make the cure take a sudden change in velocity. Imagine a ball bouncing on the floor. The moment it hits the floor it should rapidly bounce up. You can do this by setting the continuity of the key at –1.0. With a continuity of –1 the curve approaches the key with the same velocity as with a linear interpolation. With a continuity of 1.0 the curve approaches the key with an equal velocity as a linear interpolation but with an opposite direction. This shows up in the curve shape as a ‘bounce’ on the key. Look at the top line in the picture to see this effect. A continuity of 0.0 results in a smooth shape with no sudden velocity changes.

B (bias)

Effect of bias

With the bias parameter you can shift the ‘weight’ of a key from one side to the other. With a bias of 1.0 the curve is linear after the key and the curve before the key is shaped so the curve stays continuous. A bias of –1.0 reverses effect to the other sides of the key. You can use the bias value to make an object look very heavy by setting the bias at 1.0. This way the object ‘overshoots’ the key and it looks as if the object has a large momentum.

Using them together

The TCB values affect each other. If the tension is 1.0 the other parameters have no effect. On the other hand a tension of –1 will exaggerate the effect of the other parameters. The continuity and bias can be used separately without any problems.

The TCB values are used to calculate the shape ate the key by looking at the neighboring keys. This means that you do not have to alter the TCB values if you change the value of an envelope. You can achieve an ease-in ease-out effect by setting the tension to 0.0.

CallChannel

Calling this channel has no effect.

Remarks

  • If you use a Set Value on an envelope a new key is created with the value at the position of the input.
  • If the envelope has no input the default Timer Value is used as input.
  • If you do not want to animate a value you should use a regular Value.

Applications

Used to animate values over time. This can be a motion, a color, a fog density etc, etc.. It is also used to draw the relation between two values in a graph. You can link the rotation of one object to the rotation of another. With the envelope you are able to draw how the rotation of the first object should affect the rotation of the second object.

Tips

  • Try to limit the number of keys in the envelope

Example

Different use of envelops

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables | Animation


Envelope Command - Quest3D

Envelope Command

Contents

  • 1 Envelope Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Set value as TCB
      • 1.3.2 Set value as Linear
      • 1.3.3 Set value as Step
      • 1.3.4 Clear Keys
      • 1.3.5 Set all keys to TCB
      • 1.3.6 Set all keys to Linear
      • 1.3.7 Set all keys to Step
    • 1.4 CallChannel
    • 1.5 Example

Envelope Command

General

Allows you to control how keys are created in an Envelope channel.

Children

  1. Envelope - Envelope
    • Target envelope to control
  2. Operands - Value
    • Specific for selected control, see below

Description

This channel can be used to create new keys in the Envelope channel or it can be used to change the type of keys. The type of control can be selected in the channel properties dialog.

Set value as TCB

Links two Value children next to the Envelope child. The first Value child is for the position of the new key and the second Value child is for the value of the key. This key is generated as a TCB spline.

Set value as Linear

Links two Value children next to the Envelope child. The first Value child is for the position of the new key and the second Value child is for the value of the key. This key is generated as a Linear line.

Set value as Step

Links two Value children next to the Envelope child. The first Value child is for the position of the new key and the second Value child is for the value of the key. This key is generated as a Step line.

Clear Keys

Clear all keys of the linked Envelope channel.

Set all keys to TCB

Will change all the keys in the linked Envelope channel to TCB splines.

Set all keys to Linear

Will change all the keys in the linked Envelope channel to Linear lines.

Set all keys to Step

Will change all the keys in the linked Envelope channel to Step lines.

CallChannel

When this channel is called, the selected control will be executed on the linked Envelope channel.

Example

Envelope Control example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Commands and Settings


Reference Manual/Editor/Animation Section/Envelope Slider - Quest3D

Reference Manual/Editor/Animation Section/Envelope Slider

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Envelope Slider
    • 1.1 General
    • 1.2 Selecting keys
    • 1.3 Moving keys
    • 1.4 Copying keys
    • 1.5 Deleting keys
    • 1.6 Creating keys
    • 1.7 Changing a key’s interpolation
    • 1.8 About TCB interpolation
      • 1.8.1 T (tension)
      • 1.8.2 C (continuity)
      • 1.8.3 B (bias)
      • 1.8.4 Using them together
    • 1.9 Key Frames
    • 1.10 Create a key frame
    • 1.11 Manipuating key frames
    • 1.12 Controls

Envelope Slider

General

Keys in the Envelope slider bar

With the Envelope slider bar you can edit keys of multiple envelopes at once. If one of the envelopes has a key at a poison the Envelope slider will show a key.

Selecting keys

You can select keys by clicking them. Each time you click a key you add that key to your selection. To deselect all key you can click in the black area between the keys. You can also click and drag to select multiple keys at once. If you want to select multiple keys by dragging multiple times you need to hold the CTRL key while you are dragging.

Moving keys

You can click and hold the left mouse button to move a key. You move the key by moving your mouse from left to right. You can move multiple keys by selecting multiple keys and moving one of them. The original position of the key you are moving is showed as a gray key. You can also move keys by using the “Shift” option in the context menu. The dialog that pops up asks you if you want to move them to a position that is the same as their old position with the specified offset or you want to make the keys you are copying start at the specified position.

Copying keys

By selecting “Copy” from the context menu or by pressing the "Insert Key" button (see control 11 below) you can copy keys. This buttons inserts a new key if no keys where selected. The dialog that pops up asks you if you want to copy them at a position that is the same as their old position with the specified offset or you want to make the keys you are copying start at the specified position.

Deleting keys

You can delete all selected keys by pressing the “del” button (see control 10 below) or by selecting "Delete Key" from the context menu.

Creating keys

When you change the value of an envelope and there is no key present at the position of the input of the Envelope a key is automatically created. You can also insert a new key by pressing the Insert Key (see control 11below) button while there are no keys selected.

Changing a key’s interpolation

An envelope automatically calculates the values that are between keys. There are several methods for doing this:

Step interpolation(no interpolation)

Step This method always uses the value at the position before the input value.

Lineair interpolation

Linear This method draws a line between keys to calculates the value that is between them.

TCB interpolation

TCB This method results in a smooth curve and it has 3 parameters at each key to control the shape of the curve.

You can select the method of interpolation for the selected key(s) by pressing one of the three "Curve Type" buttons (see controls 15, 16 or 17 below). When you insert a new key the new key will use the interpolation of the button that is toggled. The button shows the interpolation that is used for the first key before the input position.

About TCB interpolation

The tension, continuity and bias buttons

When a key uses TCB interpolation you can drag the Tension button (see control 12 below), Continuity button (see control 13 below) and Bias button (see control 14 below) to alter the shape of the curve. If the motion path is enabled in the 3d view you can see the effect of changing these three parameters by looking at the shape of the path.

T (tension)

Effect of tension

Tension determines how the curve should alter its shape by looking at its neighbor keys. A tension of 1 ensures the velocity is 0 at the key. In this case velocity decreases towards the key and increases after the input of the envelope passed the key. A tension of 0 will result in a smooth curve. A tension of –1 will exaggerate the shape of the curve. With a tension of –1 the speed increases towards the key and decreases past the key. In short, the tension allows you to tweak how much the curve responds to the positioning of the keys.

C (continuity)

Effect of Continuity

A continuous curve has a velocity that smoothly varies along the curve. With the continuity parameter you cam make the cure take a sudden change in velocity. Imagine a ball bouncing on the floor. The moment it hits the floor it should rapidly bounce up. You can do this by setting the continuity of the key at –1.0. With a continuity of –1 the curve approaches the key with the same velocity as with a linear interpolation. With a continuity of 1.0 the curve approaches the key with an equal velocity as a linear interpolation but with an opposite direction. This shows up in the curve shape as a ‘bounce’ on the key. Look at the top line in the picture to see this effect. A continuity of 0.0 results in a smooth shape with no sudden velocity changes.

B (bias)

Effect of bias

With the bias parameter you can shift the ‘weight’ of a key from one side to the other. With a bias of 1.0 the curve is linear after the key and the curve before the key is shaped so the curve stays continuous. A bias of –1.0 reverses effect to the other sides of the key. You can use the bias value to make an object look very heavy by setting the bias at 1.0. This way the object ‘overshoots’ the key and it looks as if the object has a large momentum.

Using them together

The TCB values affect each other. If the tension is 1.0 the other parameters have no effect. On the other hand a tension of –1 will exaggerate the effect of the other parameters. The continuity and bias can be used separately without any problems.

The TCB values are used to calculate the shape ate the key by looking at the neighboring keys. This means that you do not have to alter the TCB values if you change the value of an envelope. You can achieve an ease-in ease-out effect by setting the tension to 0.0.

Key Frames

Timer dropdown list

The envelope slider has a dropdown list (see control 4 below) that allows you to select what timer you are using by dragging the slider (see control 3 below). If a timer is playing and you drag the slider the timer is automatically stopped. The slider and the box next to the play controls (see control 9 below) shows the current value of the timer. If you want to make it easy on yourself you should not be using a motion that uses different timers to controls it’s parameters.

Create a key frame

When you place the slider control on a certain position and move an item, like an object, camera or light; a key frame is automatically created.

Make sure the slider is positioned at zero when you want to change the starting position of an item.

When the play button (see control 7 below) is pressed the slider will start moving from the current position to the end. You are able to change the end by changing the value in the right edit box (see control 2). When this value has been reached the slider will jump back to the start (see control 1).

You can record a motion by pressing the Record button (see control 6 below). As you move an object the envelopes will create new keys while the timer is playing. The grid snap setting sets the interval at which the envelopes will create new keys.

You can drag the slider by pressing the button that shows the current frame. You can move the slider by moving the mouse while it is pressed.

Manipuating key frames

  • Selecting Keys - You can drag a selection bar by clicking in an empty area of the black bar.

You can also select keys by clicking them directly. You can select multiple keys by holding the Ctrl key while selecting keys.

  • Dragging Keys - You can drag one or multiple keys by clicking a key and holding the mouse. The keys will automatically be snapped to a grid that can be set trough the context menu. By default the grid snapping feature is set to 1.0

Controls

  • 1 - Start Value - This value specifies the starting value of the slider bar. The slider will show all keys that fit within the range of the slider. The motion path in the 3d view is also limited to the slider range. If you press play the slider will jump back to this point once it reaches this point. In most cases the starting value will be greater or equal to 0 but this value can also be negative if that is needed.
  • 2 - End Value - This value is the end value of the range of key frames that is displayed. By default Quest3D will run 25 frames per second.
  • 3 - Slider Button - You can drag this control by pressing the button that shows the current frame. You can move the slider by moving the mouse while it is pressed.
  • 4 - Timer - This timer will control the slider bar and vice versa.
  • 5 - Previous - Jump to the previous key frame in the animation
  • 6 - Record - Start recording key frames.
  • 7 - Play - Start playing the current timer from the current position to the start and keep looping.
  • 8 - Next Key - Jump to the next key frame in the animation
  • 9 - Current Frame - This is a more accurate display of the current frame than the value that is shown in the sliderbar. This display is accurate to 1/100th frame. You can also type a value into this box to jump to that frame.
  • 10 - Delete Key - This button deletes all selected keys. If no keys are selected it deletes the key that is at the same position as the slider.After deleting key(s) the slider will move to the key that is left from the deleted key(s).
  • 11 - Insert Key - If there are any keys selected a dialog pops up that lets you copy the selected key(s) to another point in time. If no keys where selected a requester pops up to ask you where you want to insert a new key.
  • 12 - Tension - If you keep pressing this button you can alter the Tension of keys by moving the mouse up and down. The tension of a key alters how fast the motion moves through the key. If the tension is 1.0 the motion will slow down until the key is reached and will accelerate after that. For one moment the velocity of the motion is zero. If you use a tension of -1.0 the opposite will happen: the motion will accelerate towards the key and will slow down after passing the key.
  • 13 - Continuity - Keep pressing this button to change the continuity of the spline.
  • 14 - Bias - Keep pressing this button to change the bias of the curve.
  • 15 - Curvetype: Step - Keys are not interpolated. The motion uses the value of the key before the current position
  • 16 - Curvetype: Linear - The envelopes calculate the in between values automatically by looking at the two neighbor values and their distances from the current value. The interpolation will show up as a line and the motion will look somewhat mechanical.
  • 17 - Curvetype': TCB - This interpolates the motion smoothly while still allowing some flexibility. There are three parameters that can be set for each frame: tension, continuity and bias.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Envelope Command - Quest3D

Envelope Command

(Redirected from EnvelopeControl)
Jump to: navigation, search

Contents

  • 1 Envelope Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Set value as TCB
      • 1.3.2 Set value as Linear
      • 1.3.3 Set value as Step
      • 1.3.4 Clear Keys
      • 1.3.5 Set all keys to TCB
      • 1.3.6 Set all keys to Linear
      • 1.3.7 Set all keys to Step
    • 1.4 CallChannel
    • 1.5 Example

Envelope Command

General

Allows you to control how keys are created in an Envelope channel.

Children

  1. Envelope - Envelope
    • Target envelope to control
  2. Operands - Value
    • Specific for selected control, see below

Description

This channel can be used to create new keys in the Envelope channel or it can be used to change the type of keys. The type of control can be selected in the channel properties dialog.

Set value as TCB

Links two Value children next to the Envelope child. The first Value child is for the position of the new key and the second Value child is for the value of the key. This key is generated as a TCB spline.

Set value as Linear

Links two Value children next to the Envelope child. The first Value child is for the position of the new key and the second Value child is for the value of the key. This key is generated as a Linear line.

Set value as Step

Links two Value children next to the Envelope child. The first Value child is for the position of the new key and the second Value child is for the value of the key. This key is generated as a Step line.

Clear Keys

Clear all keys of the linked Envelope channel.

Set all keys to TCB

Will change all the keys in the linked Envelope channel to TCB splines.

Set all keys to Linear

Will change all the keys in the linked Envelope channel to Linear lines.

Set all keys to Step

Will change all the keys in the linked Envelope channel to Step lines.

CallChannel

When this channel is called, the selected control will be executed on the linked Envelope channel.

Example

Envelope Control example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Commands and Settings


Tutorials/Examples - Quest3D

Tutorials/Examples

< Tutorials
Jump to: navigation, search

Contents

  • 1 Examples
    • 1.1 Collada Import
    • 1.2 GUI
    • 1.3 Newton
    • 1.4 Weather System
    • 1.5 Object Oriented Development
    • 1.6 OGG
    • 1.7 Motion Trackers
    • 1.8 Related documentation

Examples

Collada Import

  • Demo showing how to use the SceneImporter channel.
  • Viewer that overviews of the imported Collada scene.

GUI

  • Demo showing GUI components in Quest3D

Newton

  • Simple Start
  • Not yet available
  • Collision Compound
  • Convex Hull
  • Collision Tree
  • Centre of Mass
  • Not yet available
  • Hinge Joint
  • Ball and Socket Joint
  • Slider Joint
  • UpVector
  • Materials
  • Contact Statistics
  • Contact Behaviour

Weather System

  • Weather System

Object Oriented Development

Basic Concepts

  • Object Creation and Rendering
  • Specialization
  • Inheritance

Patterns

  • Singleton Pattern
  • Factory Pattern
  • Manager Pattern
  • Observer Pattern
  • Facade Pattern
  • Hierarchical Visitor Pattern

Advanced Concepts

  • Dynamic Object Management
  • Collision Detection
  • Plug-in Based Architecture
  • Resource Management
  • Multi-pass Rendering
  • Multi-target Rendering

OGG

  • OGG Player

Motion Trackers

  • WiiMote

Related documentation

  • Tutorials


Exporting:Documentation - Quest3D

Exporting:Documentation

Exporting

Information
  • Documentation
  • FAQ
  • Forum
How to
  • Export lightmaps
  • Export transparency

Contents

  • 1 Overview
  • 2 Requirements
  • 3 Export instructions
    • 3.1 Standard export
    • 3.2 Export from MAXScript
  • 4 Supported materials
    • 4.1 Standard material
    • 4.2 Shell Material
    • 4.3 Wire-material (without material)
    • 4.4 Multi/Sub-Object
    • 4.5 Quest3D Material

Overview

The exporter plugin exports a scene from 3D Studio MAX® directly to Quest3D's file format (.CGR file).

Main exporter features:

  • Hierarhy export
  • Animation support
  • Alpha blending support
  • Multi map support
  • Smoothing group support
  • Vertex color
  • Supported materials

Requirements

  • 3D Studio MAX® 8 with ServicePack 3 or 3D Studio MAX® 9
  • Quest3D v3.6

Export instructions

Standard export

To export a scene to Quest3D, select from the main menu: File > Export or File > Export selected. Then change the export format to "Quest3D file exporter (*.CGR)" using the "Save as"drop-down list, then click the "Save" button.

On the exporter options window set export options and press button "Export!".
Select "Flatten hierarhy" if you want to export scene as one object.
Select "Export animation" if you want to export animation.
Select "Use vertex color" option to export vertex color.
Select "Fast channel graf" option to export CGR file as small as possible (without unnecessary channels like vectors of values). It increase rendering performance.

During exporting, current status of process is visible on the status bar.

Export from MAXScript

To export Quest3D CGR file from MAXScript use command:

exportFile fileName [#noPrompt selectedOnly:true]

where:

  • fileName - CGR file name
  • #noPrompt - "Don't show exporter dialogs" flag
  • selectedOnly:true - Export selected flag

Example: exportFile "c:/test/myscene.cgr" #noPrompt selectedOnly:false

Supported materials

Standard material

3D Studio Max (before export) | Quest3D (after export)
Diffuse color | Diffuse color
Self illumination | Emissive color
Specular highlights | Specular color + Specular power
Diffuse map | Texture Stage 1
Opacity value | Exported as "Alpha Value" transparency
Opacity map | If opacity map slot contains the same texture as diffuse map then surface is exported as "Texture Alpha Image" Transparency. Map Amount factor is supported as texture factor.

Shell Material

From Shell Material the Quest3D exporter exports material from "Original" slot. With all parameters like colors, textures etc
Diffuse Map from "Baked" material slot exported is as second stage (with own UV set, and correct color blending settings).

Wire-material (without material)

In 3D Studio Max, before you assign first material to a object, it already has artificial "Wire material". This material contains random diffuse color. This material is exported to Quest3D as normal material with correct color.

Multi/Sub-Object

Sub-materials from "Multi/Sub-Object Material" are exported to Quest3D as separated materials.

Quest3D Material

The Quest3D material is a dedicated material with a user interface and options very similar to the Quest3D object section. Rollouts names and meanings are analogus to the tabs in Quest3D. By using this material, models in the 3DsMax viewport look exactly as they will in Quest3D.


Exporting:FAQ - Quest3D

Exporting:FAQ

Exporting

Information
  • Documentation
  • FAQ
  • Forum
How to
  • Export lightmaps
  • Export transparency

FAQ

  • Do I need Quest3D installed to use exporter?

Yes. You have to have Quest3D 3.6 installed on your computer.

  • When are you going to finish exporter?

Exporters are never finished :)
We are going to still keep work on exporter and release new versions very often.

  • Can I use exporter in Maya?

Now there is no exporter version for Maya, but we are going to implement it in the future. .X Exporters for Maya can be found on the Quest3D web-site.


Exporting:History - Quest3D

Exporting:History

Exporting

Information
  • Documentation
  • FAQ
  • Forum
How to
  • Export lightmaps
  • Export transparency

Version history

  • 0.2.17

- "Textures are missing" bug fixed

  • 0.2.16

- Scale factor added
- Search textures mechanism
- Naming surfaces convention changed ("object_name -> material_name")

  • 0.2.15

-Textures coordinates bug fixed

  • 0.2.14

- new: Naming surfaces convention changed
- new: Option change name of root channel added
- Export empty scene bug fixed

  • 0.2.13

- Soothing group bug fixed
- Exporting map on MAX 9 issue fixed
- Speed of exporting improved
- new: Motion channel with correct possition added
- new: Option "Top channel public" added.
- new: Reject Alpha, and Ref value parameters added in Quest3D material
- new: Default Specular color changed to zero in Quest3D material

  • 0.2.12

- Textures coordinates bug fixed

  • 0.2.11

- Speed of exporter improved

  • 0.2.10

- Animation support added

  • 0.2.00

- Hierarchy export added

  • 0.1.13

- Better mesh optimization
- Support check box in maps slots

  • 0.1.12

- Support Quest 3.5.5 version - Conflict with panda exporter fixed

  • 0.1.10

- Network texures path supported
- Crash bug during export mapping channel fixed

  • 0.1.09

- Crash bug fixed
- Now exporter is ready to use from max script (#noPrompt supported)

  • 0.1.08

- Due to exporter has different release cycle not synchronized with Quest3D, we changed version numbers rules. Afte-r 3.5.007 is 0.1.08 version.

  • 3.5.007

- Now operations on texture in the material editor (Tiling, Offset, Rotation) are supported.

  • 3.5.006

- Out of memory error in huge models fixed
- Now baked material from Multi-sub object is supported.

  • 3.5.005

- Duplicated textures are exported as public call channels

  • 3.5.004

- Opacity value and opacity map in Standard material support
- Better color blending settings after export
- Emissive color bug fixed

  • 3.5.003

- New way Shell material support (support lightmaps, shadowmaps, and complete maps)
- New "Fast tree" export option
- Now exporter remember options
- Now exporter doesn't export not used materials (eg. in Multi/Sub-Object material)
- UV error fixed
- Some small bugs fixed


Exporting:Main features list - Quest3D

Exporting:Main features list

Exporting

Information
  • Documentation
  • FAQ
  • Forum
How to
  • Export lightmaps
  • Export transparency

Main features list

The exporter plugin exports a scene from 3D Studio MAX® directly to Quest3D's file format (.CGR file).

Main exporter features:
- Hierarhy export
- Animation support
- Alpha blending support
- Multi map support
- Smoothing group support
- Vertex color

Supported Materials:
- Standard Material
- Shell Material
- Wire-material (without material)
- Multi/Sub-Object
- Quest3D Material


Expression Value - Quest3D

Expression Value

Contents

  • 1 Expression Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Add ('+')
      • 1.3.2 Subtract('-')
      • 1.3.3 Multiply('*')
      • 1.3.4 Divide('/')
      • 1.3.5 Power('**')
      • 1.3.6 Modulus('%')
      • 1.3.7 Choice('# ? # : #')
      • 1.3.8 Binary operations
      • 1.3.9 Functions
    • 1.4 Remarks
    • 1.5 Applications
    • 1.6 Tips
    • 1.7 Examples

Expression Value

General

In short, the expression channel is a value based on an expression. Among other things, it allows you to create formulas, like A+B, A*B, etc. You can use the expression channel as a regular Value channel.

Children

  • Float - Value

Link your operands to this channel. One of the operands can also be used as a result!

Description

The expression editor

The expression editor is a channel that can be used in two ways:

  • It is a value that is calculated by calculating an expression with several parameters.
  • You can call it to copy the result of the expression into a value channel

The two modes work about the same, the only difference is the target of the result of the expression. Left from the expression you can select the target. If the target is "THIS" you do not have to call the channel. The value is calculated as soon as a channel request the value of the Expression Value. The other targets can be one of children of the Expression Value.

A letter is assigned to each child: A until Z(26 parameters in total). You can use each of the letters in the equation but you can only set one or no values (in case the target is THIS). There are three other variables available: PI TC and RAND. PI is about 3.14 and RAND is a random value between zero and one. TC is the tickcount of the current frame.

The following operators are supported:

Add ('+')

This operator adds the value on the left to the value on the right. Example: A+B+0.1

Subtract('-')

This operator subtracts the value on the right from the value on the left. Example: A-B-0.1

Multiply('*')

This operator multiplies the value on the right with the value on the left. Example: A*B*PI

Divide('/')

This operator divides the value on the right by the value on the left. Example: A/B

Power('**')

This operator calculates the power of a value. The value is on the left and the power is on the right. Example: A**2

Modulus('%')

This operator calculates the modulus of a value. This value must be an integer. If you wish the modulus of a real value then use this formula: "((A/B) - FLOOR(A / B))*B" Example: A%1.0

Choice('# ? # : #')

The result is the second value if the first value is non-zero and the third value otherwise. Example: A ? 10 : -10

Binary operations

You can also use the expression to perform binary operations. In this case the 1.0 counts as a TRUE value and a 0.0 as a FALSE value. You can even compare values and use them in a binary equation: !(A<(B+0.1))|C

The following operators are supported:

< Less than

> Greater than

<= Less than or equal

>= Greater than or equal

== Equal

= Equal

<> Not Equal

!= Not Equal

|| OR

&& AND

^ XOR

! NOT

Functions

You can also use functions in the expression. The following function are supported:

  • SIN(A) Calculates the sine. Example: SIN(PI)
  • ASIN(A) Calculates the arcsine. Example: ASIN(1.1)
  • SINH(A) Calculates the hyperbolic sine. Example: SINH(1.1)
  • COS(A) Calculates the cosine. Example: COS(1.23)
  • ACOS(A) Calculates the arccosine. Example: ACOS(1.2)
  • COSH(A) Calculates the hyperbolic sinus. Example: COSH(2.6)
  • TAN(A) Calculates the tangent. Example: TAN(90/180*PI)
  • ATAN(A) Calculates the arctangent. Example: ATAN(3.1)
  • ATAN2(A,B) Calculates the arctangent of A/B. Example: ATAN(1, 2)
  • TANH(A) Calculates the hyperbolic tangent. Example: TANH(4.1)
  • ABS(A) Calculates the absolute of a value. Example: ABS (-0.1)
  • AVG(A,B,..) Calculates the average of a number of values. Example: AVG(1,2,3,4)
  • EXP(A) Calculates e (the base of natural logarithms) raised to a power. Example: EXP(1)
  • FLOOR(A) Calculates the values before the decimal point. Example: FLOOR(1.3232)
  • FRAC(A) Calculates the values after the decimal point. Example: FRAC(1.2112)
  • LN(A) Calculates the base e logarithm of A. Example: LN(12)
  • LOG2(A) Calculates the base 2 logarithm of A. Example: LOG2(16)
  • LOG10(A) Calculates the base 10 logarithm of A. Example: LOG10(10)
  • MAX(A,B,..) Calculates the maximum value of a number of values. Example: MAX(1,3,4)
  • MAXDIF(A,B..) Calculates the difference between the max and min value. MAXDIF(1,3,4,5)
  • MIN(A,B,..) Calculates the minimum value of a number of values. Example MIN(1,3,4)
  • ROUND(A) Calculates the rounded value of A. Example: ROUND(2.34)
  • SUM(A,B,..) Calculates the sum of a number of values. Example: SUM(1,3,4,5,2)
  • SQRT(A) Calculates the square root of a value. Example: SQRT(9)

Remarks

You can also use the operator for binary operations:

(A|B)*0.1

The operator will return 0.1 if A or B is 1 and will return 0 if they're both 0.

Applications

  • Use operator channels in combination with an If channel to check if certain values are high or low enough etc. Operator channels can also be used to check multiple channels for the right value.
  • You can have a value call an operator channel which can add a a number to that value. And in effect have an keyword=iteration]iteration/keyword].

Tips

  • This is a very useful channel with as drawback that it can become very complicated quickly. The easiest way to use the operator channel is to use more then one operator for harder calculations. So that you can still have a good overview of what is happening.
  • Using one operator with many children and many conditions can become very hard to still understand.

Operator channel can set another child's value just like the Set Value channel.

Examples

Expression used as an input for an If channel

The above image shows an If construction with an Expression Value as the selector. The inputs for the expression are LeftMouse and Shift. The expression itself can be something like "A&&B", or "A||B". The expression serves as a binary selector in these cases - it's either 0 (not true) or 1 (true).

Expression Value - Math

Expression Value - Logical

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision | Variables | Operators


Tutorials/Object Oriented Programming/Facade Pattern - Quest3D

Tutorials/Object Oriented Programming/Facade Pattern

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Facade
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 ObjectManager.cgr
    • 1.5 ObjectSubsystem.cgr
    • 1.6 Publishing the subsystem
    • 1.7 start.cgr
    • 1.8 Examples
    • 1.9 External Links

Facade

Introduction

The facade-pattern, in the programmingworld better known as a wrapper, is used to give a single point of entry for a subsystem, i.e. there is only one interface/class which exposes the subsystems' functionality to the outside world.

In big OOP-projects this pattern is a must to create the architectural composition needed to make the system:

A. managable by future programmers/third parties;

B. expandable/extendable with new functionality;

C. generic enough to replace subsystems entirely.

Functional description and context

In this tutorial we'll use the interfaces and classes from the manager-pattern tutorial as a basis and will extend it with a wrapper interface/class to expose some of the ObjectManager's functionality to the start CGR.

So what do we need?

  • The interfaces and classes from the manager-pattern tutorial;
  • A new interface/object definition that will be the wrapper;
  • A changed start-cgr which will call the wrapper-functions instead of the ObjectManager-functions.

Design

As shown in the diagram: We will create the "IObjectSubsystem"-interface which will contain the function-definitions we will expose to the outside world (note that every manager-function except 'setFieldSize()' is exposed). When we then implement these functions in the "ObjectSubSystem"-class, all we do is call the functions of the manager class.

The final step will be to publish the project, hence protecting the CGR's, and creating the sample 'start.cgr'-project for this tutorial.

ObjectManager.cgr

The object manager we use is the manager from the manager-pattern tutorial.

ObjectSubsystem.cgr

In object subsystem CGR we expose the functions of the manager to the outside world.

1. Create the "IObjectSubSystem"-interface and expose every "ObjectManager" function except 'setFieldSize()';

2. Create the "ObjectSubSystem"-class, implementing the interfaces "IObjectSubSystem" and "IObjectManager".

3. Implement the functions:

As shown in the figure, the functions just call their "ObjectManager"-equal.

Publishing the subsystem

4. Publish the project as an Quest3D Viewer in \output:

As shown in the figure we export all the cgr's that make up our subsystem:

  • Object.cgr;
  • Primitive.cgr;
  • ObjectManager.cgr.

Note that we DO NOT publish the facade, since we need it unprotected in order for it to work.

start.cgr

5. Copy the facade.cgr from your project-folder to the output-folder;

6. Create a new Quest3D project in the output-folder, with start.cgr as project-entry;

7. Import the facade.cgr to your project and name it "ObjectSubSystem";

As show in the figure all the imported CGR's, except the facade itself, are protected. No member of function parameters are accessible, and if you try to open the channelgraph, a message shows you that this cgr is protected.

8. In start.cgr create the same init/render/control-logic as in the manager-pattern tutorial, using the "ObjectSubsystem" as interface.

There you have it: the facade-pattern in action.

Examples

  • Facade Pattern

External Links

  • [Facade pattern]

Categories: Tutorials | OO


Tutorials/Object Oriented Programming/Factory Pattern - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorials/Object Oriented Programming/Factory Pattern

From Quest3D

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Factory
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Implementation
      • 1.4.1 Step 1: ObjectFactory.cgr
      • 1.4.2 Step 2: ObjectFactory.cgr
      • 1.4.3 Step 3: Objects\Object.cgr
      • 1.4.4 Step 4: Objects\Object.cgr
      • 1.4.5 Step 5: ObjectFactory.cgr
      • 1.4.6 Step 6: Objects\Object.cgr
      • 1.4.7 Step 7: Objects\Object_Primitive.cgr
      • 1.4.8 Step 8: StartProject.cgr
      • 1.4.9 Step 9: Objects\Object_Mesh.cgr
      • 1.4.10 Step 10: StartProject.cgr

Factory

Introduction

A Factory design pattern is, as it's name implies, a structure to create products(instances). A factory is used in cases where we need to instantiate an (unknown) amount of instances of a certain type or subtype(s). The benefit of using a Factory design pattern is that it is relatively easily to create and maintain a group/list of objects which are similar in design but can be slightly different in appearance and/or functionality.

  • More information about the Factory design pattern can be found here [1]
  • Download the tutorial files here.

Resulting picture, different objects created with the same factory
Resulting picture, different objects created with the same factory

Functional description and context

For our factory we need to determine the type of objects our factory can produce, in this example the factory will be able to create and render primitives.

For this tutorial a few files and a directory are needed:

  • a file called StartProject.cgr (this file will create an instance of our factory, and use this instance to render and create our primitives)
  • the factory file, this file is called ObjectFactory.cgr (this file creates and manages our objects)
  • a new directory called Objects which includes the following files:
    • Object.cgr (the main interface for all our objects)
    • Object_Primitive.cgr (this will hold the interface for a primitive, also we will create 3 different classes in this file to support 3 different primitive types.)
    • Object_Mesh.cgr (this will hold the interface for rendering a custom mesh, just to show that the factory does not care about the visual representation of our objects.)

Design

OO tut303 01.jpg

Implementation

Step 1: ObjectFactory.cgr

Head for the OO Editor (with the ObjectFactory.cgr active) and add a new interface called IObjectFactory, while there add a class called CObjectFactory and add the IObjectFactory interface.

Step 2: ObjectFactory.cgr

Create the member variables and member functions with their function parameters as described below.

The ObjectFactory should (at least) be able to perform the following tasks (member functions):

  • initialize() clears the instance list
  • getObject(ClassType, InstanceRefItem) creates a new object of provided ClassType and returns the created instance
  • drawObjects() loops through the instance list and calls the draw function of the objects
  • updateObjects() loops through the instance list and calls the update function of the objects
  • getObjectByIndex(index, InstanceRefItem) returns an object from a certain position in the instance list
To make things more clear during this tutorial the functions are postfixed with brackets () and some also include the function parameters.

The ObjectFactory also needs a place to store it's created objects so we also add a member variable of the type Class Instances List to our interface and call it objectList. This member is set private so no one but the ObjectFactory can modify this list.

IObjectFactory should look similar to this
IObjectFactory should look similar to this

Step 3: Objects\Object.cgr

With the object.cgr active go to the OO Editor and create the interface IObject.

Step 4: Objects\Object.cgr

Create the member variables. In this case the factory creates rendereable 3D objects which have a position a rotation and a size, so it's member variables are:

  • position
  • rotation
  • size
It's good practice to make member variables private and create so called accessor functions to set and get the contents of these variables.

Create member functions.

  • draw() draws this object
  • update() updates this object
  • getPosition() accessor function for getting the position
  • setPosition(newPosition) accessor function for setting the position
  • getRotation()
  • setRotation(newRotation)
  • getSize()
  • setSize(newSize)
IObject should look similar to this
IObject should look similar to this

Step 5: ObjectFactory.cgr

Now the basic structure is defined in the interfaces, all we need to do now is implement the interfaces. So let's get channeling, open the ObjectFactory and the OO Editor.

initialize()

This function is pretty straight foreward, on start and/or reset the objectList needs to be cleared. You can use the InterfaceCommand Clear Container.

initialize()

getObject( ClassType, InstanceRefItem )

Calling this function from anywhere in a project will create a new object. First an new instance is created with the InterfaceCommand Create Instance, using the classType parameter (as you may have noticed this function accepts a classType as parameter). To be sure that the classType provided is compatible with the interface of IObject a small check is needed before adding this object to the objectList. To do this check the InterfaceValue Does the class instance contain the interface is used on the just created instance. If this instance is compatible with the IObject interface it is added to the Class Instances List and returned as a InstanceRefItem.

getObject() creates a new object of a certain classType
getObject() creates a new object of a certain classType

drawObjects() & updateObjects()

These two functions are pretty much the same, the only difference is that the drawObjects() function calls the draw() function of IObject and the updateObjects() function calls the update() function of IObject. By seperating the drawing and updating routine of the objects we can later on in the project easily draw the objects a second time without needing to recalculate the positions or rotations again.

To loop through the objectsList you can use the InterfaceCommand For each class instance list, this channel sets the current InstanceRefItem on the second child, using this InstanceRefItem you can now call the right draw() or update() function.

drawObjects() & updateObjects() loop through the list of objects
drawObjects() & updateObjects() loop through the list of objects

getObjectByIndex(index, InstanceRefItem)

This function is added to provide a way of retrieving a single object from the objectList. This is usefull for instance if there is one object of which the size needs to change. The index is used by the InterfaceCommand Instance reference at position to create a reference of this object.

getObjectByIndex() get a single object from the list
getObjectByIndex() get a single object from the list

Step 6: Objects\Object.cgr

Now it's time to implement the IObject interface, from which we will eventually derive the IObject_Primitive interface.

setPosition() & getPosition()

With setPosition() it is possible to set the object to any position, this function accepts a vector as parameter and uses this to set the postion. The getPosition returns the position of the object.

setPosition() & getPosition() set and get the position of an object
setPosition() & getPosition() set and get the position of an object

The get/setRotation and get/setSize functions are similar to the get/setPosition function.

draw()

Since this function is only used as interface for our primitive class we do not need to render anything here, for consistency though a NULL object is linked to the draw function. Later in this tutorial this function is overridden by the draw function of our primitive objects. As you can see the get functions are used to get the position, rotation, and size of the object.

draw() draws the object
draw() draws the object

update()

In this tutorial all primitives move the same way, they rotate around all axis, that's why we can implement the update function here so that all objects are updated using this update() function. This behavior can always be overridden or extended in other classes.

See how the get and set functions are used to modify the rotation.

update() updates the object
update() updates the object

For those interested, here the expression for rotating an axis is:

(A+(B*TC)) > (PI*2) ? 0 : (A+(B*TC)).

Step 7: Objects\Object_Primitive.cgr

Now that there is a basic definition of an object called IObject, it has a position a rotation and a size, and by updating the object we adjust the rotation. The only thing missing is a visual object in this case a certain type of primitive.

With the Object_Primitive.cgr active add an interface called IObject_Primitive (the prefix IObject_ is a nice way to show that this interface is an addition to the IObject interface in the Object.cgr).

The IObject_Primitive interface has some additional members on top of the IObject interface:

  • primitiveType an member variable of the type Channel: primitive
  • subdivisionLevel an member variable of the type Value
  • color an member variable of the type Vector
IObject_Primitive should look similar to this
IObject_Primitive should look similar to this

As you see there are three primitive classes a CObject_Primitive_Box a CObject_Primitive_Cone and an CObject_Primitive_Torus these classes all implement the IObject and the IObject_Primitive interfaces. By overriding the primitiveType member for each class a different primitive can be set for each class. The same can be done with the color member and the subdivisionLevel.

Make sure that the draw() function in IObject of each primitive class is overridden and points to the corrent draw() function in IObject_Primitive(Double click the draw() function in the target column).

CObject_Primitive_Box implements IObject and IObject_Primitive, some or all members can be overridden
CObject_Primitive_Box implements IObject and IObject_Primitive, some or all members can be overridden

draw()

To draw the primitives the draw() funtion of IObject needs to be overridden in the Object_Primitive.cgr file. As you see it looks similar to the draw() function in the Object.cgr, the position, rotation and size are retrieved by using the get function. The difference here is that the 3DObject data channel is a member variable called primitiveType (the primitive channel) as well as the color vector and subdivisionLevel value. These member variables are overridden as we saw in the previous step, so by calling this draw() function depending on the instantiated class it shows an Box a Cone or a Sphere.

draw() is overridden from IObject and implements a way of drawing primitives in Object_Primitive.cgr
draw() is overridden from IObject and implements a way of drawing primitives in Object_Primitive.cgr

Step 8: StartProject.cgr

Now let's tie all these classes and cgr's together, we will use the StartProject.cgr to do this. Open up the StartProject.cgr and drag in a Start3DScene and set this to be the StartChannel. Now we defined 3 main functions in our factory, so we can split the startGroup in 3 main callers namely:

  1. Initialization
  2. Updating
  3. Rendering

Have a look at the screenshot below,

StartProject.cgr ties all classes together
StartProject.cgr ties all classes together

Now as you see there are three sections there, let's go through each one of them:

1: Initialization

This is actually the most interesting part of the StartProject.cgr. First look at A, here the class instance of the ObjectFactory is created, and with this instance the ObjectFactory is initialized. Now the ObjectFactory is initialized (the objectList is cleared) we can start creating obejcts. Look at B in the forloop we call the ObjectFactory's getObject() function to create new objects, here a channelswitch is used to switch between the three primitive classTypes we defined earlier. The function returns a reference to the just created object, this reference can be used to set a position for instance as is done in C.

2: Updating

Now after initialization we can start updating the ObjectFactory which in turn updates each individual object. This updating occurs every frame, however you could pause the update loop, but still render the current visual state of the project.

3: Drawing

After the update loop the objects are ready to be rendered. A basic camera and a point light are used to render the objects. Also here the renderloop could be paused or skipped so that the objects are only updated, this could be useful in a multi player application where one of the clients acts as the server only which just needs to calculate the state of the application.

Step 9: Objects\Object_Mesh.cgr

Now there is also another object type just to show that the ObjectFactory does not care about how an object looks or how it renders. Create an interface IObject_Mesh and a class CObject_Mesh, the interface currently has no extra member variables of functions, but those could for instance include a texture member variable. Now add the IObject interface to the class since we want this class to be compatible with the ObjectFactory. As you can see in the screenshot below the update(), draw() and size members are overridden.

The CObject_Mesh class
The CObject_Mesh class

draw()

Instead of drawing a primitive in the overridden draw() function a custom 3D model is rendered.

Object_Mesh.cgr the draw() function
Object_Mesh.cgr the draw() function

update()

The update() function of the IObject interface is overridden because the Mesh object should behave/move a little bit different than the other objects, in this case it should animate up and down along the Y axis. However this object should also have the normal behavior, just as the primitives it should also rotate on all axis. To accomplish this we use the default implementation of the Update() function and then apply our own behavior. Have a look at the screenshot below, the setPosition() and an expression are used to create the new behavior specific for the CObject_Mesh class.

Object_Mesh.cgr the update() function
Object_Mesh.cgr the update() function

Step 10: StartProject.cgr

The final step of this tutorial will show you how to also add an Object_Mesh.cgr object to the ObjectFactory. Actually it's exactly the same as adding Primitives to the ObjectFactory. This is of course the proof of concept and the power of the Factory design pattern. Here's a screenshot which shows you how an Object_Mesh object is created/added using the getObject() function. Notice that the only difference is the input parameter for Class Type, as you can see the Class Type is now set to CObject_Mesh.

Creating Object_Mesh objects is almost the same as creating Object_Primitive objects
Creating Object_Mesh objects is almost the same as creating Object_Primitive objects

Categories: Tutorials | OO | New in version 4.0


FastCollisionResponse - Quest3D

FastCollisionResponse

Contents

  • 1 FastCollisionResponse
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Differences
    • 1.4 Example

FastCollisionResponse

General

Provides simple and fast collision detection

Children

  1. In: Movement Vector - Value Vector
    • The movement vector of the spheroid for the current frame.
  2. In: Collision Spheroid Radius - Value Vector
    • The radiuses of the collision spheroid.
  3. Out: Movement Position - Value Vector
    • The initial position for the movement.
  4. In: Friction Coefficient - Value
    • Friction factor between 0 and 1
  5. Out: Speed - Value
    • The speed of the motion in the last frame.
  6. Vertical penalty force - Value Vector
  7. In: Collision objects - CollisionObject
    • The object that the spheroid can collide with.
  8. Array Column - Array_Column
    • You can check collision with an Array_Column that hold 3D Objects.

Description

This channel works the same as the CollisionResponse channel but only accepts CollisionObject channels as children. Because the CollisionObject will create a tree the collision check will be much faster.

Differences

There are a few differences from the original CollisionResponse channel. In the properties window you are able to configure the number of iterations the collision response should use to calculate the actual response effect.

If you raise this number of iterations, the collision response will become slower but more accurate. Lowering the number will make the response faster but might cause strange results. If you are experiencing strange behaviour, please increase this number. Do not use larger values than 30.

The penalty force has been changed to a vector so you change to force direction.

Please read the CollisionResponse help for all other functions in this channel.

Example

Creating collision detection with Array Pointer

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Collision


FastMultiObjectData - Quest3D

FastMultiObjectData

Contents

  • 1 FastMultiObjectData
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

FastMultiObjectData

General

Quickly render multiple instances of the same objectdata.

Children

  1. Source ObjectData - 3D ObjectData
    • Source object data to clone
  2. Current object rendered - Value
    • Value which if updated while rendering
  3. Position of extra object - Matrix
    • Matrices of new cloned objects
  4. Textures - Texture
    • Vary the texture of the cloned objects

Description

This channel is able to as quick as possible render clones of an objectdata. This is done using a vertex shader that is as minimal as possible. In its interface you can determine if you do want one directional light. Each matrix linked will mean a new instance of the original objectdata. The textures linked to this channel will be devided over the rendered objectdatas. If for example you have 4 textures and 20 matrixes the first five will have the first texture etc.

CallChannel

Calling this channel also renders the objects.

Applications

Use Motions and you can for example create multiple cars in your scene.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


FasTRAK Command - Quest3D

FasTRAK Command

Contents

  • 1 FasTRAK Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Close Connection
      • 1.5.2 Get if station is Active
      • 1.5.3 Get Position and rotation of sensor 1
      • 1.5.4 Get Position and rotation of sensor 2
      • 1.5.5 Get Position and rotation of sensor 31
      • 1.5.6 Get Position and rotation of sensor 4
      • 1.5.7 Is Connected
      • 1.5.8 Open Serial Connection
      • 1.5.9 Open USB Connection
      • 1.5.10 Reset to default
      • 1.5.11 Save settings to EEPROM
  • 2 Examples
  • 3 External links

FasTRAK Command

Children

  1. All Types Channel – Depends on the selected command.

Description

This channel can be used to execute a command on the FasTRAK tracker.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the combobox in the FasTRAK channel interface

Commands

Close Connection

This function provides the user with a mean of closing the connection with the FasTRAK.

Get if station is Active

This function requests if the provided station nbr is active

Children

  1. Value - To specify station to query
  2. Value - Receives 0 of the station is inactive, receives 1 if station is active

Get Position and rotation of sensor 1

This function gets the position and orientation of a sensor. The orientation is provided using three angles: heading, picth and bank.

Children

  1. Value Vector - receives the position
  2. Value Vector - receives the orientation

Get Position and rotation of sensor 2

This function gets the position and orientation of a sensor. The orientation is provided using three angles: heading, picth and bank.

Children

  1. Value Vector - receives the position
  2. Value Vector - receives the orientation

Get Position and rotation of sensor 31

This function gets the position and orientation of a sensor. The orientation is provided using three angles: heading, picth and bank.

Children

  1. Value Vector - receives the position
  2. Value Vector - receives the orientation

Get Position and rotation of sensor 4

This function gets the position and orientation of a sensor. The orientation is provided using three angles: heading, picth and bank.

Children

  1. Value Vector - receives the position
  2. Value Vector - receives the orientation

Is Connected

This function returns the current connection status. The returnd value can be one of the following numbers :

  • 0 - No Connection
  • 1 - Serial
  • 2 - USB

Children

  1. Value - receives the connection status

Open Serial Connection

This function must be called before any communication with the FasTRAK can take place over a serial connection.

Children

  1. Value - to specify the port number
  2. Value - to specify the baud rate
  3. Value - to receive nonzero if the connection succeeded

Open USB Connection

This function must be called before any communication with the FasTRAK can take place over a USB connection.

Children

  1. Value - to receive nonzero if the connection succeeded

Reset to default

This function resets all of the system EEPROM variables to their factory default values. In order to permanently save these values, the calling application should call Save settings to EEPROM.

Save settings to EEPROM

This function writes all of the system EEPROM variables to EEPROM.

Examples

FasTRAK example

External links

  • FasTRAK Web site

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | New in version 3.6 | VR


FastShaderStencilShadowObject - Quest3D

FastShaderStencilShadowObject

Contents

  • 1 FastShaderStencilShadowObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

FastShaderStencilShadowObject

General

Render in the stencil buffer using vertex shaders and converted quick object a shadow volume.

Children

  1. Shadow object - 3D Object
    • Object to create the volume of

Description

The StencilShadow channel uses this channel to render a volume in the stencil buffer. This channel will use a vertex shader to create the volume to render. This channel does not work with skinned objects and some complex objects can have artifacts. You can change the edge threshold in the interface. If you still have an incorrect object please use the SoftwareStencilShadowObject channel instead to render your stencil shadow.

CallChannel

Does nothing

Applications

Render your stencil volume in the stencil buffer to be able to create stencil buffer shadows.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


FastSkinning - Quest3D

FastSkinning

Contents

  • 1 FastSkinning
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

FastSkinning

General

Render multiple skinned characters quickly.

Children

  1. Source ObjectData - 3D ObjectData
    • Skinning object datas to render
  2. Current model rendered - Value
    • While rendering this value changes which can be used for animation offset
  3. Position of extra character - Matrix
    • Matrix for new skinned object position
  4. Textures - Texture
    • Textures for new instances

Description

This channel is the best way to render a crowd. It works by using a simple vertex shader and non interpolated motions when the object is far away and return to its original skinning weights and motions closer to the camera. This way you are able to very quickly render a crowd that is not all in the same position.

In the interface you are able to change between using oen weight and no lights and using two weights and one directional light. You can change at what distance lineair motions are used instead of the normal interpolated ones. Also the base color can be changed.

You can't use skinned object that have more then 25 bones. This is a vertex shader limitation.

CallChannel

Calling this channel will render the crowd also.

Applications

Render multiple skinned objects.

Tips

Try to use one whole object for your character.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation


FileDialog - Quest3D

FileDialog

Contents

  • 1 FileDialog
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

FileDialog

General

Pop ups a File Dialog window and will set its text to the filename selected.

Children

  1. Load Or Save Dialog - Value
    • 0 - Save Dialog, 1 - Load Dialog
  2. WildCard - Array Text
    • The Wildcard file extention to select from, for example *.bmp
  3. WildCard Description - Array Text
    • The description of the Wild Card seen in the file dialog and used to make the file type selection

Description

When you call this channel it will show a common Windows file dialog window that will allow the user to select a file.

The child value will allow you to set if the file dialog should be a "Load" or "Save" dialog.

When a file is selected, the full path will be stored in the channel so you can use it as a child for channels that require a filename.

Under Windows 2000 this channel will show the following dialog:

Windows 2000 file dialog

CallChannel

When this channel is called, the windows file requester will pop-up and remember the selected file as text.

Remarks

  • This channel should not be called in a full-screen session!
  • Please note: Make sure you call this channel once, or else the file dialog window will be opened every frame!
  • WildCard and WildCard description can online be inputted via Array Text

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


FiniteStateMachine - Quest3D

FiniteStateMachine

Contents

  • 1 FiniteStateMachine
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Examples

FiniteStateMachine

General

Create a complex structure by drawing link nodes to control your projects.

Children

  1. State Change Values - Value
    • Values to let the FSM change its current state
  2. State Call Channels - All Types Channel
    • Channels to call when a FSM is at a certain node
  3. State Trigger Channels - All Types Channel
    • Channel to trigger when a specific state change takes place

Description

The finite state machine is a method to be able to manage complex structures like a menu structure to logic states of scenes. For example a menu structure might have a complex state from which screen can be switched to which screen under certain conditions. Using values for every screen you might have to create a very complex hard to manage and hard to expend method of using expression values ifs and other logic to create the requested modes. Finite state machine is the answer for such structures. In a finite state machine you are able to create a state for every menu and define graphically the conditions how to enter that menu state.

Another example of a finite state machine is the logic to control a character. If a character has complex behavior functions from wanting to flee to searching an area grouping the conditions to switch to certain behavior and manage the behavior states to act on the state is a very complex and requires a lot of logic channels. A finites state machine can then be used to paint the characters ‘brain’ to control its behavior.

Besides these more complex functions finite state machines can really well be used for a lot of simple structures. For example when the user clicks a certain button a text will fly trough the screen which will leave after 5 seconds or if the user pressed space. This logic structure is by far the easiest to create using the finite state machine.

You can use as many finite state machines in your project as needed.

A finite state machine is a value that you can also use to do an action in your scene.

CallChannel

Calling this channel will calculate its actions.

Examples

Basic FMS value

Basic State Call

FSM as application manager

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | A.I. | Conditional Channels


FloatTexture - Quest3D

FloatTexture

Contents

  • 1 Texture
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Texture

General

Special texture type used to store Ocean wave generator values.

Children

  1. Alpha Texture - Texture
    • Not used
  2. Bumpmap Scale - Value
    • Not used
  3. Load texture from file - Buffer
    • Not used

Description

This channel can be used a a normal texture. It is not possible to load a file into this channel. This channel is only filled with pixeldata by the Command channel when it is set to "Create Ocean Textures Mode".

CallChannel

Not implemented.

Remarks

None

Applications

Rendering with the ocean shader.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing | New in version 3.5


Flock of Birds Command - Quest3D

Flock of Birds Command

Contents

  • 1 Flock of Birds Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Wake-up (Value …)
      • 1.5.2 Shut-down
    • 1.6 Remarks
  • 2 Examples
  • 3 See Also
  • 4 External links

Flock of Birds Command

Children

  1. All Types Channel – Depends on the selected command.

Description

This channel can be used to execute a command on the Flock of Birds device.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the combobox in the Flock of Birds channel interface

Commands

Wake-up (Value …)

This command Wakes-up the Flock of Birds device attached to the COM port, specified in the Value channel attached as a child.

Shut-down

This command removes Shuts Down the running Flock of Birds device.

Remarks

The current implementation of the Flock of Birds driver for Quest3D only supports one Flock of Birds device in Stand-Alone modus.

Examples

Flock of Birds attached to camera

See Also

  • Flock of Birds Matrix

External links

  • Flock of Birds at the Ascension Web-site

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR | Commands and Settings | New in version 3.5


Flock of Birds Matrix - Quest3D

Flock of Birds Matrix

Contents

  • 1 Flock of Birds Matrix
    • 1.1 Description
    • 1.2 Base type
  • 2 Examples
  • 3 See Also
  • 4 External links

Flock of Birds Matrix

Description

This channel contains a matrix with the position and rotation data of the Flock of Birds device.

Base type

Matrix

Examples

Media:FobSample.zip

See Also

  • Flock of Birds Command

External links

  • Flock of Birds at the Ascension Web-site

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR | New in version 3.5 | Variables


ForceFeedback - Quest3D

ForceFeedback

Contents

  • 1 ForceFeedback
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

ForceFeedback

General

Send force feedback files or forces to first found force feedback device

Children

  • Force vector - Value Vector

Use the X and Y component from -1 to 1 to give a force to the FF device

Description

Force Feedback devices are often joysticks that allow the computer to control two force axis. With this channel you are able to play FFE files that can be created with the FFE editor that comes with Quest3D or load created FFE files from the extra's directory. Instead of using a FFE file you can use the Value Vector child to set a force.

The forces set with the vector use the X and Y component of the vector the Z component is ignored. X = 0 and Y = 0 is rest position and will not generate any force. Forces you can set range from -1 to 1 for both the X and Y of the vector.

With the Command channel you can stop an effect with the approriate command.

In the interface of the ForceFeedback channel you are able to load a FFE file with the "Load" button. Clear the FFE file with the "Clear" button. You will still be able to set a force vector when you use an FFE file or when it is cleared. Pressing play will do a "Call Channel" on the ForceFeedback which will play the currently loaded effect.

CallChannel

Call channel will play the current effect. Each time the Call is done it will stop all effects that where playing trough this channel and start the effects again. So make sure when you use an FFE file to only trigger this channel not keep calling it. When using a force vector however you will need to call it more often to update the command to the joystick. As a guidline you should not send more then 10 commands per second to a joystick for most Force Feedback devices to react correctly.

Applications

This channel can be used to add Force Feedback functionality to your projects. From walking on different soils and give a different feel to the joystick to getting hit and generate an effect.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | UserInput | VR


ForLoop - Quest3D

ForLoop

Contents

  • 1 ForLoop
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

ForLoop

General

Calling several channels for a number of times when it is called.

Children

  1. Loop Times - Value
    • Specify the number of times that this channel has to call.
  2. Current Value - Value
    • This value is the current number of the loop that it is in.
  3. Call Channels - All Types Channel
    • Call the channels that have to be called.

Description

The "For Loop" is commonly used in many different programming languages. In all cases it will repeat one or more operations. The number of times it should repeat can be configured and you can use the current iteration in the operations it repeats.

This channel operates in the same way. You can configure how many times this channel should call the "Call Channels" children with the "Loop Times" child. When this channel is called it will set the second child "Current Value" to the current iteration number.

CallChannel

Calling this channel will start the loop and it will call the children the configured number of times.

Remarks

The first time the loop is entered the "Current Value" is 0, the second time 1, etc...

Applications

This channel is very useful when you want to load an array of channelgroups into a pool, or want to call some public channels in an array of channelgroups.

Tips

Some channels have loop protection. This loop protection prevents the programming from entering an endless loop, but will also cause unexpected behavior with this channel. If needed you can turn this functionality off through the "General Channel Properties".

There are tutorials available that show you how to use this channel with multiple channelgroups in an array.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


Reference Manual/Editor/General - Quest3D

Reference Manual/Editor/General

< Reference Manual | Editor
Jump to: navigation, search

Contents

  • 1 General
    • 1.1 General Toolbar Buttons
    • 1.2 Mode Buttons
    • 1.3 Tab Window
    • 1.4 Message Log
    • 1.5 Debug Window
    • 1.6 Database Monitor
    • 1.7 Network Information
    • 1.8 Channel Tools

General

There are a number of windows and functions that can be used throughout Quest3D. In this part of the documentation describes these windows and functions.

General Toolbar Buttons

  • 1 - New... - When clicked, you will be asked if you want to delete all currently loaded channelgroups from memory. When you agree, all pools with channelgroups will be removed and a new channelgroup will be created in a pool. What pool name should be used is asked.
  • 2 - Open as project... - Remove all groups from memory and load a channelgroup. First, you will be asked if you would like to delete all channelgroups from memory before a file requester will appear where you can choose the main channelgroup to load. You will not be asked in what pool the channelgroup should be loaded because the pool name from the channelgroup is used. This will allow you to load an entire project instantly especially when the auto-load function is used to load other channelgroups into other pools. Make sure you have saved all your work.
  • 3 - Save - When this toolbar button is clicked, the channelgroup that is currently visible in the active channel graph window will be saved to disk.No confirmation will be asked; the file will be saved immediately.
  • 4 - Save All - This toolbar button will instantly save all channelgroups that are loaded and viewed once in the channel graph window. Dynamically loaded channel groups can't be saved and are also skipped by this function.
  • 5 - Import... - You can open a file to load as channelgroup into a new pool. There are a number of different files you can load, not just channelgroups. You can use this function to load a 3D object. You can use this function to import 3D files into Quest3D. There are currently a number of file formats available.
  • 6 – View All - This toolbar button will set the view of the channel graph this way that all channels are in view and centered in the channel graph.
  • 7 – Channel Link Properties – To use this toolbar function you need to select a channel first in the channel graph. If a channel is selected and you press this button the properties dialog of the selected channel will be displayed.
  • 8 - Select Mode 1 - Switch to the channels section - split mode, 2 channel graphs are displayed, can be 2 diffent channel groups, or you can have 2 different views of one channel group.
  • 9 - Select Mode 6 - Switch to the channels section - Big channel mode, only one big channel graph will be displayed.
  • 10 - Select Mode 2 - Switch to the animation section
  • 11 - Select Mode 3 - Switch to the object section
  • 12 - Select Mode 4 - Switch to the array section.
  • 13 - Select Mode 5 - Switch to the Path finding / Nature Paint section.

Mode Buttons

These modes control the execution mode of the editor.

  • Mode Buttons

Tab Window

This windows can help organize other windows.

  • Tab Window

Message Log

  • Message Log

Debug Window

This window shows debug information and error messages that are generated by Quest3D.

  • Debug window

Database Monitor

  • Database Monitor

Network Information

  • Network Information

Channel Tools

  • Channel Tools

One Level Up - Editor

Back to Main Index

Categories: Reference Manual | Editor


GetChannelGroup - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChannelGroup

From Quest3D

Jump to: navigation, search

Function definition

A3d_ChannelGroup* GetChannelGroup(int nr);

Description

Retrieve the pointer of a channel group that is loaded in memory.

Parameters

Name | Description
nr | Number of the channel group to retrieve

Return Value

Returns the pointer to a A3d_ChannelGroup or NULL if the group could not be retrieved.

Remarks

The core engine holds a list of all currently loaded channel groups. You are able to retrieve a channel group from this list with this function. The nr parameter will determine which channel group from the list should be retrieved. The function will return NULL if no channel group could be retrieved.

Use the GetChannelGroupCount function to retrieve the number of channel groups that are currently loaded. The nr parameter should remain under this number of channel groups.

Related Documentation

GetChannelGroupCount

One Level Up - EngineInterface

Back to Main Index


GetChannelGroupCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChannelGroupCount

From Quest3D

Jump to: navigation, search

Function definition

int GetChannelGroupCount();

Description

Retrieve the number of channel groups that are currently loaded.

Return Value

An integer value holding the number of channel groups loaded.

Related Documentation

GetChannelGroup

One Level Up - EngineInterface

Back to Main Index


GetChannelIDIndexNr - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChannelIDIndexNr

From Quest3D

Jump to: navigation, search

Function definition

int GetChannelIDIndexNr();

Description

Retrieve the index number of the current channel.

Return value

Integer representing the index of the channel in the channel group.

Remarks

When a channel is added to a channel group it is given an index number. This number can be retrieved with this function. Normally this function is not needed.

One Level Up - A3d Channel

Back to Main Index


GetChannelInterfaceType - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChannelInterfaceType

From Quest3D

Jump to: navigation, search

Function definition

int GetChannelInterfaceType();

Description

Retrieve the interface type of the channel

Return Value

A integer value holding the interface type. It can be one of the following predefined values:

Name | Description
ACO_NORMAL | 0
ACO_PUBLIC | 1
ACO_PUBLICCALL | 2
ACO_PARAMETER | 3
ACO_CUSTOMCHANNELGET | 4
ACO_PUBLICCUSTOMCHANNELGET | 5

These values are defined in the A3d_Channels.h file.

Remarks

The core engine holds a list of all currently loaded channel groups. You are able to retrieve a channel group from this list with this function. The nr parameter will determine which channel group from the list should be retrieved. The function will return NULL if no channel group could be retrieved.

Use the GetChannelGroupCount function to retrieve the number of channel groups that are currently loaded. The nr parameter should remain under this number of channel groups.

Related Documentation

SetChannelInterfaceType

One Level Up - A3d Channel

Back to Main Index


GetChannelName - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChannelName

From Quest3D

Jump to: navigation, search

Function definition

const char* GetChannelName();

Description

Retrieve the current name of the channel.

Return value

Returns a pointer to a NULL terminated constant string that holds the name of the channel with a maximum length of 60.

Related Documentation

SetChannelName

One Level Up - A3d Channel

Back to Main Index


GetChannelType - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChannelType

From Quest3D

Jump to: navigation, search

Function definition

ChannelType GetChannelType();

Description

Retrieve the type settings of a channel

Return value

A ChannelType struct that will contain the type settings of a channel

Related Documentation

ChannelType struct

One Level Up - A3d Channel

Back to Main Index


GetChild - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChild

From Quest3D

Jump to: navigation, search

Function definition

A3d_Channel* GetChild(int nr);

Description

Returns a pointer of a channel that is linked to the given child link position

Parameters

Name | Description
nr | The child link position number.

Return value

Returns a pointer of the A3d_Channel type that can be type-casted to the correct type or NULL if no child is linked at the given position

Remarks

The child link position number range from 0 to the number of children that is linked. There could be an empty child link position in the total number of child link positions. An empty child link position will always return NULL, but you are able to continue to scan for more linked children. Use the GetChildCount function to retrieve the number of linked children.

This function should not never be overloaded.

Example

In the following example you can see how the first child pointer is retrieved, type-casted into the correct type and then this pointer is used to call a function; in this case reset the value of a value channel.

void Aco_ChannelCaller::CallChannel() {
  Aco_FloatChannel* floatChannel;

  if (CheckRenderCount()) {
     // Our child link position only accepts a float
     // so we can safely type cast to the float type
     floatChannel = (Aco_FloatChannel*)GetChild(0);

     // Set the float value of our child to zero
     if (floatChannel != NULL) {
        floatChannel->SetFloat(0);
     }
  }
}

Related Documentation

GetChildCount

One Level Up - A3d Channel

Back to Main Index


GetChildCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChildCount

From Quest3D

Jump to: navigation, search

Function definition

int GetChildCount();

Description

Return the number of child link positions of the current channel

Return value

An int value with the number of child link positions, returns zero if none are available

Remarks

You are able to use this function if there is one growing child link position on the channel.

This function should never be overloaded.

Example

In this example the GetChildCount function is used to determine how many channels the for loop should call.

void Aco_Example::CallChannel() {
   A3d_Channel* inputChannel;

   if(CheckRenderCount()) {
      int count = GetChildCount(0);
      // we calculate all the links we made
      for(int i=0; i<count; i++) {
         inputChannel = (A3d_Channel*)GetChild(i);
         if(inputChannel!=NULL) {
            inputChannel->CallChannel();
         }
      }
   }
}

Related Documentation

GetChild

One Level Up - A3d Channel

Back to Main Index


GetChildFromLinkGuid - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChildFromLinkGuid

From Quest3D

Jump to: navigation, search

Function definition

A3d_Channel* Function(GUID channelType, int childTypeNr);

Description

Retrieve a pointer to a channel of a certain type.

Parameters

Name | Description
channelType | GUID of the channel that linked channel.
childTypeNr | The number of the linked channel that should be retrieved.

Return value

Returns a pointer to a channel that can be type-casted or NULL if the requested channel could not be found.

Remarks

This function should be used when the channel has a growing child link positions that accepts any type of channel. With the GetChildTypeCount function you are able to retrieve the number of channels linked with the given type and with this function you are able to retrieve the actual pointer to a channel.

Also see the Channel Communication documentation for more information.

This function should not be overloaded

Example

In this example linked channels with the MYCHANNEL GUID are called.

void Aco_Example::CallChannel() {
   Aco_MyChannel* myChannel;

   if (CheckRenderCount()) {
      int count = GetChildTypeCount(MYCHANNEL_GUID);
      // Now call all channels linked
      for(int i=0; i<count; i++) {
         myChannel = (Aco_MyChannel*)GetChildFromLinkGuid(MYCHANNEL_GUID, i);
         if (myChannel != NULL) {
            myChannel ->CallChannel();
         }
      }
   }
}

Related Documentation

GetChildTypeCount, Channel Communication

One Level Up - A3d Channel

Back to Main Index


GetChildFromLinkPosition - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChildFromLinkPosition

From Quest3D

Jump to: navigation, search

Function definition

A3d_Channel* GetChildFromLinkPosition(int linkPosition, int childPositionCount);

Description

Retrieve the pointer of a channel that is linked as a child based on the initial child link position and number of children linked to that initial child link position.

Parameters

Name | Description
linkPosition | The number of the initial child link position This is the same number as used with the SetChildCreateType function in the createNr parameter.
childPositionCount | Number of the channel linked to the given linkPosition growing link position.

Return value=

Return a pointer to a channel or NULL if the requested channel could not be retrieved childPositionCount Number of the channel linked to the given linkPosition growing link position.

Remarks

This function should be used when you are trying to retrieve a pointer from a growing child link position with a certain type. When a number of growing link positions are used then there is no correct way to use the GetChild function. If, for example, a channel has two growing child link positions and there are two channels linked to the first child link position and five to the second, you are able to use this function to retrieve these channels correctly.

For more information also see the Channel Communication documentation

This function should not be overloaded.

Example

In this example all channels linked to the initial child link position are called.

void Aco_Example::CallChannel() {
   A3d_Channel* inputChannel;

   if (CheckRenderCount()) {
      int count = GetChildLinkPositionCount(1);
      // we calculate all the links we made
      for(int i=0; i<count; i++) {
         inputChannel = (A3d_Channel*)GetChildFromLinkPosition(1, i);
         if (inputChannel != NULL) {
            inputChannel->CallChannel();
         }
      }
   }
}

Related Documentation

GetChildLinkPositionCount, GetChild, Channel Communication

One Level Up - A3d Channel

Back to Main Index


GetChildLinkPositionCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChildLinkPositionCount

From Quest3D

Jump to: navigation, search

Function definition

int GetChildLinkPositionCount(int linkPosition);

Description

Retrieve the number of children that are linked to the given initial child link position

Parameters

Name | Description
linkPosition | The growing child position link number used as the createNr parameter of the SetChildCreateType function.

Return value

An int value with the number of child link positions of the given initial child link position.

Remarks

This function will allow you to correctly retrieve a pointer to a channel when there are multiple growing child link positions on a channel. The initial child link position number that is used as createNr parameter of the SetChildCreateType function should be used as the linkPosition parameter. The function will only return the number of child link positions of that growing child link position.

You are able to read more on this subject at the Channel Communication documentation.

This function should never be overloaded.

Example

In this example all channels linked to the initial child link position are called.

void Aco_Example::CallChannel() {
   A3d_Channel* inputChannel;

   if (CheckRenderCount()) {
      int count = GetChildLinkPositionCount(1);
      // we calculate all the links we made
      for(int i=0; i<count; i++) {
         inputChannel = (A3d_Channel*)GetChildFromLinkPosition(1, i);
         if (inputChannel != NULL) {
            inputChannel->CallChannel();
         }
      }
   }
}

Related Documentation

Channel Communication, SetChildCreateType, GetChildFromLinkPosition

One Level Up - A3d Channel

Back to Main Index


GetChildTypeCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetChildTypeCount

From Quest3D

Jump to: navigation, search

Function definition

int GetChildTypeCount(GUID channelType);

Description

Retrieve the number of children linked with the given GUID

Parameters

Name | Description
channelType | The GUID of the channel type that should be counted

Remarks

This function should be used when the channel has a growing child link positions that accepts any type of channel. With this channel you are able to figure out how many channels of a certain type are linked to the channel and with the GetChildFromLinkGuid function you are able to retrieve the correct pointer to the correct channel.

Also see the Channel Communication documentation for more information.

This function should not be overloaded.

Example

In this example linked channels with the MYCHANNEL GUID are called.

void Aco_Example::CallChannel() {
   Aco_MyChannel* myChannel;

   if (CheckRenderCount()) {
      int count = GetChildTypeCount(MYCHANNEL_GUID);
      // Now call all channels linked
      for(int i=0; i<count; i++) {
         myChannel = (Aco_MyChannel*)GetChildFromLinkGuid(MYCHANNEL_GUID, i);
         if (myChannel != NULL) {
            myChannel ->CallChannel();
         }
      }
   }
}

Related documentation

Channel Communication, GetChildFromLinkGuid

One Level Up - A3d Channel

Back to Main Index


GetEngineClassName - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetEngineClassName

From Quest3D

Jump to: navigation, search

Function definition

const char* GetEngineClassName();

Description

Used to retrieve the class name of the engine

Returns

a NULL terminated string that holds the class name of the Quest3D core engine

Related documentation

GetEngineInstance, GetWindowHandle

One Level Up - EngineInterface

Back to Main Index


GetEngineInstance - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetEngineInstance

From Quest3D

Jump to: navigation, search

Function definition

HINSTANCE GetEngineInstance();

Description

Retrieve the HINSTANCE the engine was started with

Returns

HINSTANCE of the application.

Related documentation

GetWindowHandle, GetEngineClassName

One Level Up - EngineInterface

Back to Main Index


GetHighInstance - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetHighInstance

From Quest3D

Jump to: navigation, search

Function definition

int GetHighInstance(const char* instanceGroupName);

Description

Retrieve the highest instance of a channel group in a pool.

Parameters

Name | Description
instanceGroup | Name of the pool to check

Return Value

Integer representing the highest number in the given pool.

Remarks

With this function you are able to retrieve the number of channel groups that are loaded into a pool. This is useful when you want to add a new instance to the pool or loop through all the channel groups in the pool.

When a single channel group is removed from a pool an empty position is created. The value returned will not change when a channel group other than the last in the pool is removed.

Related Documentation

GetChannelGroup, GetChannelGroupCount

One Level Up - EngineInterface

Back to Main Index


GetInfoIfTag - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetInfoIfTag

From Quest3D

Jump to: navigation, search

Function definition

bool GetInfoIfTag(char tag[4]);

Description

Check for the presence of the given tag at the current buffer position.

Parameters

Name | Description
tag | Four characters that represent the tag that should be tested on the file buffer.

Return Value

Return true if the given tag is currently at the file pointer of the loaded file and false if not.

Remarks

If this function returns true the CopyTagDataToPointer function should be called to retrieve data from the buffer. If false is returned, the program should continue normally.

Example

if (loader.GetInfoIfTag("TEST")) {
    loader.CopyTagDataToPointer(&testValue_);
}

In this example the loader class will return true if the TEST tag is currently at the file pointer position. It will then load data into the testValue variable. Please note that no data size setting is needed. This settings is saved and is automatically used. Just make sure the variable is large enough for the data saved.

Related Documentation

CopyTagDataToPointer, Loading and Saving

One Level Up - EngineInterface

Back to Main Index


GetInstallDir - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetInstallDir

From Quest3D

Jump to: navigation, search

Function definition

const char* GetInstallDir();

Description

Used to retrieve the directory where the Quest3D engine was started in or is installed in. In either case, it is using the returned directory to look for channels and settings.

Returns

A NULL terminated string with the full path Quest3D is currently using.

Remarks

The installation directory is set when any Quest3D program is started. When Quest3D is started it will look into the directory of the program that was started (including the search path) to see if it can find the HighPoly.dll file. This file is needed to start the Quest3D engine. If this file is not found the registry will be read to locate the installation directory of Quest3D.

One Level Up - EngineInterface

Back to Main Index


GetPoolGroup - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetPoolGroup

From Quest3D

Jump to: navigation, search

Function definition

A3d_ChannelGroup* GetPoolGroup(const char* poolName,int instanceNr=0);

Description

Retrieve the pointer to a channel group with the given name and instance.

Parameters

Name | Description
poolName | NULL terminated string containing the name of the pool
instanceNr | Channel group instance number of the given pool. Optional parameter. | _

Return Value

Pointer to a channel group or NULL if not found.

Remarks

If the pool is an array of channel groups, you can use the instanceNr parameter to select the correct channel group from the pool. This parameter is optional and can be left out when not needed.

Related Documentation

GetChannelGroup, GetChannelGroupCount

One Level Up - EngineInterface

Back to Main Index


GetTimeStamp - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetTimeStamp

From Quest3D

Jump to: navigation, search

Function definition

DWORD GetTimeStamp();

Description

Retrieve the time stamp of a channel, often used to determine if its data has changed

Return value

A DWORD containing the time stamp, that is set to the last time SetTimeStamp is called

Remarks

This function is often to determine if data in a channel has changed. All Text channels time stamp themselves when the stored string is changed. Other channels that use this string can then re-initialize when the string has changed and do not need to create a system to detect changes.

Example

void Aco_Example1::CallChannel() {
    A3d_Channel* inputChannel;

    inputChannel = GetChild(0);
    if (inputChannel != NULL) {
        if (inputChannel->GetTimeStamp() != lastTimeStamp_) {
            // Save the new time stamp
            lastTimeStamp_ = inputChannel->GetTimeStamp();

            // Do something because our child has changeds
            DoSomethingUseful();
        }
    }
}

In this example the channel will only "DoSomethingUseful" when the time stamp of the first child has changed

Related Documentation

SetTimeStamp

One Level Up - A3d Channel

Back to Main Index


GetTreeCalculateCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetTreeCalculateCount

From Quest3D

Jump to: navigation, search

Function definition

int GetTreeCalculateCount();

Description

Retrieve the current tree count number

Returns

Integer containing the current tree count number

Remarks

The tree count number is changed every time the channel tree (graph) is called. The core engine will use this number for Loop Protection. This number can be used to determine if a function or channel is called multiple time in the same tree count.

This function is not commonly used, when coding in channel you are better of using the CheckRenderCount function.

Related documentation

SetTreeCalculateCount, Loop Protection, CheckRenderCount

One Level Up - EngineInterface

Back to Main Index


GetUniqueChannel - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetUniqueChannel

From Quest3D

Jump to: navigation, search

Function definition

A3d_Channel* GetUniqueChannel( ChannelType type, const char* uniqueName=NULL );

or

A3d_Channel* GetUniqueChannel( GUID guid, const char* uniqueName=NULL );

Description

Creates a Singleton of a given channel type.

Parameters

Name | Description
type | ChannelType struct with the guid variable set to the GUID of the channel that should be created.
guid | GUID of the channel that should be created.
uniqueName | Optional. NULL terminated string that holds the name of the unique channel.

Return value

Returns a pointer to a A3d_Channel class or NULL when the channel could not be created

Remarks

When this function is called Quest3D will search in a special channel group for a channel of the same type or guid and uniqueName (if given) and when there is a match that pointer will be returned. If not, a new instance with the given type and uniqueName will be created and that pointer is returned. This ensures you that when this function is used you always get the same pointer and all others that use the same combination of parameters also get this pointer.

With the uniqueName parameter you are able to create multiple channels of the same type, each with different name. This parameter is often used for Value and Text channels, please make sure you come up with an system wide name that nobody else already could be using or else a pointer to a unique channel will be returned that is already used for another purpose.

This special channel group with unique channels is global for the started Quest3D instance and is not shared between two Quest3D viewers or editors.

The function will always return a pointer of the A3d_Channel base class. If you want to use the channel correctly you should type-cast this pointer into the type of the channel that was asked from the function.

Different from the InitChannelFromType function you will not need to delete this channel instance.

Please also take a look at the Unique Channels documentation in this SDK.

Example

In this example you see a unique channel being initialized in the constructor.

void Aco_Example3::Aco_Example3() {

   // Create a unique channel
   Aco_FloatChannel* floatChannel = (Aco_FloatChannel*)
        GetUniqueChannel(FLOAT_CHANNEL_GUID, "MyType");

}

Related Documentation

ChannelType struct, InitChannelFromType, Unique Channels

One Level Up - EngineInterface

Back to Main Index


GetWindowHandle - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

GetWindowHandle

From Quest3D

Jump to: navigation, search

Function definition

HWND GetWindowHandle();

Description

Retrieve the HWND the engine was started with

Returns

HWND of the application.

Related documentation

GetEngineClassName, GetEngineInstance

One Level Up - EngineInterface

Back to Main Index


Glove Driver 5DT - Quest3D

Glove Driver 5DT

Contents

  • 1 Glove Driver 5DT
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 Example

Glove Driver 5DT

General

Driver for 5DT Gloves

Children

none

Description

This channel needs to be linked to a Glove Source channel. The Glove Source channel will then use this driver for all glove values and operations.

In the properties window you can select the COM port the glove is connected to. You can also try to connect and disconnect the glove using the buttons.

CallChannel

Will have no effect

Applications

Connect a 5DT glove and use the finger movement as input values.

Example

An example can be found in <YourQuest3DFolder>/Examples/VR/5DT Data Glove.cgr

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Glove Driver Immersion - Quest3D

Glove Driver Immersion

Contents

  • 1 Glove Driver Immersion
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Glove Driver Immersion

General

Immersion Data Glove driver

Children

none

Description

Use this Glove Driver to connect to the Glove Source channel so that the Immersion data glove hardware can be used. After connection all the sensors of the default connected data glove can be used. Currently only one glove per PC is supported.

CallChannel

Does not need to be called, must be linked to the Glove Source channel.

Applications

Usage of the Immersion Data Glove hardware for interaction with all Quest3D projects.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Glove Driver P5 - Quest3D

Glove Driver P5

Contents

  • 1 Glove Driver P5
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Glove Driver P5

General

Driver for usage with the Glove Source channel and the P5 Data Glove.

Children

none

Description

You can use this driver channel and link it to the Glove Source channel. The P5 glove can then be used as glove input controller. The P5 glove is a low cost glove often used for games. It supports 5 sensors, for each finger one.

In the properties dialog you change the way the glove is calibrated. We recommend calibrating the glove before using it with Quest3D.

CallChannel

Calling this channel has no effect.

Applications

Use the P5 Glove for VR environments.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Glove Source - Quest3D

Glove Source

Contents

  • 1 Glove Source
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Glove Source

General

Used to setup a the source connection to a driver of a glove input device.

Children

  1. Glove Driver - Glove Driver
    • The driver of the glove product that should be used.

Description

A glove input device is often used for hand and finger movement of the person wearing the glove. Such gloves are often used in virtual reality applications.

This channel acts as an interface between the software and the glove that is connected (the source). You must also link a Glove Driver channel so that the software will know what kind of glove is used.

In the properties window you can set the name of the source, this can later be used in other Glove channels that need to use this source. When a Glove Driver is linked, you can also find some more information about the glove driver.

You can also change the mapping of the sensors in the properties window. You must first select the custom mapping check box and then you can add new mappings using the "Add" button. Using a mapping can make it easier to switch between different types of gloves. You can create an uniform sensor mapping for any type of glove used. Make sure to select the mapping in the Glove Value properties window.

CallChannel

The channel needs to be called once in order to actually setup the connection to a glove. The Glove Value channel can be used to retrieve data from the connected source glove. Only call this channel once in your project.

Applications

Connect a virtual reality glove input device and simulate a virtual hand, or use the input values otherwise.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Glove Value - Quest3D

Glove Value

Contents

  • 1 Glove Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Glove Value

General

Retrieve values from a connect glove

Children

  1. Sensor Number - Value
    • A sensor can be selected in the properties window, but when a child is linked, this sensor number is used.

Description

Used to retrieve a value from a glove. The value to retrieve can be configured in the properties dialog. Most values will range from 0 to 1, but can depend on the type of driver that is connected. Please check the connected driver for more information.

In the properties window you will need to select a source glove from where to retrieve the values. Once a source is selected, you can select a sensor. The used sensor number can be determined by linking a Value channel or selecting it from the drop-down list in the properties interface.

CallChannel

Will have no effect.

Applications

Test if a finger is flexed or a certain gesture is taken by the glove.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


GoFullScreen - Quest3D

GoFullScreen

Contents

  • 1 GoFullScreen
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

GoFullScreen

General

Switch from/to a window/full-screen session

Children

  1. Width - Value
    • Width of the screen for full screen
  2. Height - Value
    • Height of the screen for full screen
  3. Fullscreen / window mode - Value
    • Set value child to 1 (one) for full screen and 0 (zero) for windowed mode. When no child is connected full screen mode is selected.
  4. Adapter mode - Value
    • Mode number from the SysInfo to switch to
  5. Adapter number to use - Value
    • Zero (or no child) for the default adapter, 1 for the second etc.

Description

With this channel you are able to switch to a full-screen session and back to windowed mode. With the "Full-screen/Window mode" child link you can set what mode you want.

When you want to pre-define the screen size of the full-screen window you can link two children determining the width and the height. Make sure you set the values of these children to represent a valid screen resolution like 800x600 or 1024x768.

With the "Adapter Mode" child you can select an adapter mode to use for the full-screen session. You can get a list of adapter modes through the SysInfo channel. You can set this child to a value you got from that channel.

With the "Adapter Nr." child you can select what 3D adapter to use. Some PC's have more than one adapter and with this child you are able to select the second or maybe even third adapter. Set the value to zero (0) for the first (primary) adapter and 1 (one) for the second etc.

If no "Width", "Height" or "Adapter Mode" is linked the following dialog is shown:

The user will be able to select a resolution, color depth, refresh rate and the adapter to use. The default setting for this dialog is 1024x768 with 32bits colors and the highest available refresh rate. When the "OK" button is clicked the switch to full-screen mode is made, if "Cancel" is clicked the current viewer will stay in windowed mode.

CallChannel

Calling the channel will switch to full-screen or windowed mode depending on the children linked.

Remarks

Never call this channel directly in the channel graph editor and switch to the scene editor. This will give unexpected errors in the editor. Use the NotInEditor channel to check if you are running not in the editor together with an If

Applications

When using 3d devices that are secondary and full screen use this channel to (let the user) select the correct device.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


Group Array Pointer - Quest3D

Group Array Pointer

Contents

  • 1 Group Array Pointer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

Group Array Pointer

General

Set the array (pool) pointer of a group.

Children

  1. Source - Value
    • Number of the group in the array of the target child. Set to 0 (zero) for the first group in the array (default).
  2. Target - All Types Channel
    • The actual public channel caller that should use another channelgroup in its array.

Description

This channel can change the pool array pointer of a "Public Channel Caller". This pool array pointer is a number that the Public Caller Channel will use to call the correct channelgroup in an array. You can change this pointer number to a number that is valid within the range of the pool array of the Public Channel Caller.

For example: If you load 10 channelgroups into a pool (that will form an array) and you want to use the 3rd channelgroup set the "Source" child to the value of 2 (0 is always the first channelgroup) and link the Public Channel Caller to the "Target" child. The next time the "Target" channel is called, the 3rd channelgroup in the pool will be used for processing.

CallChannel

When this channel is called, the array pool pointer of "Target" will be set to the "Source" value.

Remarks

There are several tutorials and manuals available about "Dynamic Loading" and "Pool Arrays of Channelgroups".

The "Public Channel Caller" you are setting with this channel should be called (or used as child) normally after being set with this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Arrays


Reference Manual/Editor/Channels Section/Group Interface - Quest3D

Reference Manual/Editor/Channels Section/Group Interface

< Reference Manual | Editor | Channels Section
Jump to: navigation, search

Group Interface

General

Channelgroup Interface

With this window you can view and change the parameter channels of the currently viewed channelgroup.

There are several controls that will allow you to change all parameter channels in the group. You can change the order, rename them and add new parameters.

You are able to add new parameters to a channelgroup without adding a channel as parameter channel. This allows you to create an interface compatible with another channelgroup without the needed channels.

For more information about parameter channels please see Channels Section documentation.

The list shows all parameters that are available for the current channelgroup. Not all parameters need to have a corresponding parameter channel. You can add new parameters by a "drag-and-drop" operation from the "Channel List".

When a Parameter Channel is deleted from the channel graph, an "Empty Spot" will appear in the list, meaning that it is not used. The other parameters are not moved so you can keep using them the correct way.

Buttons

  • Add Item - When you click this button a window will pop up asking you the channel type of the parameter and the name. It will be added to the first "Empty Spot", if none available then it will be added to the end of the list.
  • Delete Item - This button will delete the currently selected parameter from the parameter list. Other parameters will not be moved. An "Empty Spot" will be created if there are parameters under the deleted parameter.
  • Rename - You can change the name of the selected parameter with this button. You can assign any name to a parameter, these names are not used by Quest3D.

One Level Up Channels Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Channels Section


Reference Manual/Editor/Channels Section/Group List - Quest3D

Reference Manual/Editor/Channels Section/Group List

< Reference Manual | Editor | Channels Section
Jump to: navigation, search
WARNING: This item is deprecated

This items is probably included for backwards compatibility.
You can use the Project Tree instead.

Contents

  • 1 Group List
    • 1.1 Viewing another channelgroup
    • 1.2 Pool Types
    • 1.3 Context Menu

Group List

This window shows you all the channel groups that are currently loaded into memory in a tree style. The directory structure from disk is copied into this list.

You can load a channelgroup into a pool, and name the pool. A pool can hold more than one channelgroup. See the dynamic loading documentation and tutorials for more information on the correct usage of pools with arrays of channel groups.

Normally you would have one channelgroup per pool and name the pool after the channelgroup.

This list shows the following information on a pool:

  • Pool - Name of the pool
  • File - Filename of the channelgroup
  • Array - The number of channelgroups that are loaded into the pool
  • Full path - The full path to the loaded channelgroup

Viewing another channelgroup

If you would like to view another loaded channelgroup you can select the channelgroup you want from the list, and it will be loaded into the current active channel graph.

Pool Types

A pool can have one of the following types:

This icons indicates that a single channelgroup is loaded into a pool and is viewed once in the channel graph window. The channelgroup is also saved to disk at least once.

This icon indicates that a new channelgroup is added but is not yet saved to disk.

This icon indicates that the given pool and channelgroup is auto-loaded but not yet viewed in the channel graph window.

This icon indicates that an array of channelgroups is loaded into the given pool. You are unable to edit a dynamically loaded channelgroup.

This icon indicates that this group is the configured as the start group of the current loaded channelgroups.

Context Menu

If you press the [image] a context window is shown with the following options:

  • Show Group - This is the same as clicking on a group, the selected channel group will be shown in the channel graph.
  • Set as start group - There is always one channel group in your project that is has a start point. This channel group also has the "Start Channel" set. This starting point is saved per channel group. The channel group set as "Starting Channelgroup" will actualle call the start channel of that group. This function is not very often used.
  • Add new group - This will create a new empty channel group. You will need to give it a pool name.
  • Display pool name first - This will show the pool name in the tree, and sort it by pool name.
  • Display file name first - This will show the filename of the channelgroup first, and sort it by the filename
  • Display secondairy information - When the poolname is shown first, the filename is shown after the poolname, and when the filename is shown first, this is the other way around.

The window will remember what folders are collapsed or expanded when switching from section to section. These settings will also be remembered in your workspace.

One Level Up Channels Section

Back to Editor

Back to Main Index

Categories: Depreciated | Reference Manual | Editor | Channels Section


Group Loader - Quest3D

Group Loader

Contents

  • 1 Group Loader
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Group Loader

General

(Dynamic) load a channelgroup from file or internet

Children

  1. Group File Name - Text
    • The filename or URL (http only) of the channelgroup (.cgr file) to load.

Description

When called this channel will start (down)loading a file from disk or Internet. The first child ("Group File Name") will be used as source.

The loading of the channelgroup will be done in a separate process so you can use the Group Loader Status channel to monitor the progress. That Group Loader Status channel will show the progress from 0 to 1. When this channel is one, the group is loaded.

When a group is loaded, this channel can be used to create a pool of channelgroups. With the Load ChannelGroup channel you will be able to copy the loaded channelgroup into a pool. Together with an ForLoop channel you can create an array of the same channelgroups in a pool. Loading different channelgroups in one pool as an array is also possible. Please see Channels Section for more information on multiple channelgroups, pools and arrays.

This channel is part of the dynamic loading system of Quest3D.

CallChannel

Will start (background) loading the "Group File Name" into its buffer for later use with Load ChannelGroup to copy it into a pool.

Remarks

  • Important: Make sure the channelgroup is saved or else this channel will fail
  • Important: Make sure you call the channel once (using OneTime for example) or else the channel will keep trying to load the file and behave strange.
  • This channel is somewhat more advanced

Applications

  • Load a group from the internet into a pool
  • Create a progress bar for loading groups
  • Must be used when creating an array of groups

Tips

  • When the "Group File Name" is and URL (prefix http://) the file will be loaded through the active internet connection.
  • There are several examples and templates available that show the functionality of this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Group Loader Status - Quest3D

Group Loader Status

Contents

  • 1 Group Loader Status
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Group Loader Status

General

Get the load status of a Group Loader.

Children

  1. Group Buffer Channel - Group Loader
    • The channel with the loading/loaded group.

Description

This value channel will set itself to a value ranging from 0 to 1 depending on the download state of the Group Loader channel. When the status is below 1, loading or downloading is still busy or not yet started. If the value is 1, the Group Loader is done loading.

When the linked Group Loader channel can't load the file this channel will set its value to 2. This allows you to take action when the load fails.

This channel is part of the dynamic loading system of Quest3D.

CallChannel

Calling this channel has no effect.

Remarks

Always use this channel when you are using the Group Loader channel. The Group Loader uses a separate process to load the given channelgroup and this can take more than one tree count call. If you use the Load ChannelGroup channel before the channelgroup was fully loaded it will never load the channelgroup into a pool.

Applications

  • You can use this channel for dynamic loading of groups. Just wait until the status is 1 and then continue. If linked as the first child of the If channel you can then use a trigger with Load ChannelGroup to copy the loaded channelgroup into a pool.
  • Use this channel as the value of a progress bar to display the (down)load status of a channelgroup.

Tips

  • There are a few templates available that will show the use of this channel

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


GroupSelfSave - Quest3D

GroupSelfSave

Contents

  • 1 GroupSelfSave
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

GroupSelfSave

General

Save the currently loaded channelgroup back to disk

Children

none

Description

When this channel is called it will the save the current channelgroup back to disk. With this channel you are able to save the state of a channelgroup from within a channelgroup. This will not work with channelgroups that are downloaded from the internet.

CallChannel

When this channel is called the currently loaded channelgroup that was loaded from disk will be saved back to disk.

Remarks

Please make sure you don't call this channel too often. This will slow down Quest3D because the hard disk is accessed.

Applications

Use this channel if you want to save the state of a project you created. For example save games or user position in a world.

Tips

Create a channelgroup into your project where you store all variables that should be saved so you only need to save one channelgroup to save the state of your project.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


GUI - Quest3D

GUI

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Incomplete


GUISkin - Quest3D

GUISkin

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Incomplete


HasFocus - Quest3D

HasFocus

Contents

  • 1 HasFocus
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

HasFocus

General

Detects if the current window has the focus

Children

none

Description

This channel will detect if the window that is currently used has the "focus". In Windows only one window can be "active" and only one control on that window can have the "focus". With an edit box, this is usually where the cursor is.

This channel will detect if the focus is on the window that is showing the channelgroup. If it has the focus, it will set its value to 1.0, else it will set to 0.0.

CallChannel

Will have no effect

Applications

When multiple ActiveX controls are placed on one webpage, you can detect if the one of the controls is active and only then allow the user to click the mouse or type text.

Tips

This channel is great for usage with the TypeText channel because that channel will not work unless the the window has the focus.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


SDK/Channels/Header files - Quest3D

SDK/Channels/Header files

< SDK | Channels(Redirected from Header files)
Jump to: navigation, search

Header files

All channels are different and every type of channel has different function that can be overloaded. Below is a sample header file of a channel called "SDK_Example1", and was created with the Quest3D Channel Wizard. In between the header lines comment is placed were we thought it was needed. This header file is a typical header file of a channel.

#pragma once
#ifdef SDK_EXAMPLE1_EXPORTS
#define SDK_EXAMPLE1_API __declspec(dllexport)
#else
#define SDK_EXAMPLE1_API __declspec(dllimport)
#endif

The above part is needed to correctly export and import the DLL functions. Please leave intact, but you will need to make sure the first part that is defined is unique for every channel. Normally the wizard makes sure it is unique, but if you have not used a wizard, please change it into something unique. Also make sure that the comment on the bottom if this header file is changed to reflect the same unique string.

#define SDK_EXAMPLE1_CHANNEL_NAME "SDK_Example1"

This is the definition of the name of the channel. You are able to use this definition in the constructor of the channel, or in the child link position definitions when you want your channel to accept a child of this type and give it the correct name.

// {91A80844-2B47-4A35-9010-FD8C61D6B7BC}
static const GUID SDK_EXAMPLE1_CHANNEL_GUID = { 0x91a80844, 0x2b47, 0x4a35, { 0x90, 0x10, 0xfd, 0x8c, 0x61, 0xd6, 0xb7, 0xbc } };

This is the GUID definition of the channel. Every channel has a unique GUID that is used by Quest3D to determine what channel it is, what children it accepts and what data to load. The channel wizard automatically created an unique GUID for you. It is not recommended you alter this GUID. If you want o create a new GUID by hand, please use the GUIDGEN.EXE utility.

class SDK_EXAMPLE1_API Aco_SDK_Example1 : public Aco_StringChannel {

Here you can see the channel is derived from a string channel. When this is done, the library file must be included.

public:

   Aco_SDK_Example1();
   virtual ~Aco_SDK_Example1();

In the constructor and destructor you are able to do just about anything you like. Do not forget to destroy any new instances or variables you've created or you might end up crashing Quest3D.

   // CallChannel derived interface
   virtual void CallChannel();

CallChannel is entered when a channel is called in Quest3D. If you do not need this functionality, you are able to remove this function from the header and source file. For example, this channel will probably not need it because it was derived from a string channel. And the string channel will use the GetString() function to retrieve information from the channel.

   // Save information in channel group
   virtual bool SaveChannel(A3dFileSaver& saver);
   // Load information from channel group
   virtual bool LoadChannel(A3dFileLoader& loader, A3d_ChannelGroup *group);

Above function are overloaded from the base class to allow the channel to save and load data. Please take a look at the Saving and Loading page for more infromation.

   // Derived function that will return the channels text
   virtual const char* GetString();

The text channel has the GetString() function defined. We overload this virtual function so we can put here our own code before we return a string. This is typical for a derived channel. The value channel has a GetFloat() function, the Matrix a GetMatrix(), and a vector a GetVector(). Also, most channels have a Set function that will allow you to set data in a channel.

// Leave rest of header file intact!
#define SDK_EXAMPLE1DLL_EXPORTS extern "C" { \
__declspec(dllexport) DllInterface * __cdecl InitDLL() \
    { \
        return new Aco_SDK_Example1; \
    } \
}

The above part should be left intact and should return the correct instance. This exported function is used when a new instance of the channel should be created.

One Level Up - Channels

Back to Main Index


SDK/Channels/Header files - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Channels/Header files

From Quest3D

< SDK | Channels
Jump to: navigation, search

Header files

All channels are different and every type of channel has different function that can be overloaded. Below is a sample header file of a channel called "SDK_Example1", and was created with the Quest3D Channel Wizard. In between the header lines comment is placed were we thought it was needed. This header file is a typical header file of a channel.

#pragma once
#ifdef SDK_EXAMPLE1_EXPORTS
#define SDK_EXAMPLE1_API __declspec(dllexport)
#else
#define SDK_EXAMPLE1_API __declspec(dllimport)
#endif

The above part is needed to correctly export and import the DLL functions. Please leave intact, but you will need to make sure the first part that is defined is unique for every channel. Normally the wizard makes sure it is unique, but if you have not used a wizard, please change it into something unique. Also make sure that the comment on the bottom if this header file is changed to reflect the same unique string.

#define SDK_EXAMPLE1_CHANNEL_NAME "SDK_Example1"

This is the definition of the name of the channel. You are able to use this definition in the constructor of the channel, or in the child link position definitions when you want your channel to accept a child of this type and give it the correct name.

// {91A80844-2B47-4A35-9010-FD8C61D6B7BC}
static const GUID SDK_EXAMPLE1_CHANNEL_GUID = { 0x91a80844, 0x2b47, 0x4a35, { 0x90, 0x10, 0xfd, 0x8c, 0x61, 0xd6, 0xb7, 0xbc } };

This is the GUID definition of the channel. Every channel has a unique GUID that is used by Quest3D to determine what channel it is, what children it accepts and what data to load. The channel wizard automatically created an unique GUID for you. It is not recommended you alter this GUID. If you want o create a new GUID by hand, please use the GUIDGEN.EXE utility.

class SDK_EXAMPLE1_API Aco_SDK_Example1 : public Aco_StringChannel {

Here you can see the channel is derived from a string channel. When this is done, the library file must be included.

public:

   Aco_SDK_Example1();
   virtual ~Aco_SDK_Example1();

In the constructor and destructor you are able to do just about anything you like. Do not forget to destroy any new instances or variables you've created or you might end up crashing Quest3D.

   // CallChannel derived interface
   virtual void CallChannel();

CallChannel is entered when a channel is called in Quest3D. If you do not need this functionality, you are able to remove this function from the header and source file. For example, this channel will probably not need it because it was derived from a string channel. And the string channel will use the GetString() function to retrieve information from the channel.

   // Save information in channel group
   virtual bool SaveChannel(A3dFileSaver& saver);
   // Load information from channel group
   virtual bool LoadChannel(A3dFileLoader& loader, A3d_ChannelGroup *group);

Above function are overloaded from the base class to allow the channel to save and load data. Please take a look at the Saving and Loading page for more infromation.

   // Derived function that will return the channels text
   virtual const char* GetString();

The text channel has the GetString() function defined. We overload this virtual function so we can put here our own code before we return a string. This is typical for a derived channel. The value channel has a GetFloat() function, the Matrix a GetMatrix(), and a vector a GetVector(). Also, most channels have a Set function that will allow you to set data in a channel.

// Leave rest of header file intact!
#define SDK_EXAMPLE1DLL_EXPORTS extern "C" { \
__declspec(dllexport) DllInterface * __cdecl InitDLL() \
    { \
        return new Aco_SDK_Example1; \
    } \
}

The above part should be left intact and should return the correct instance. This exported function is used when a new instance of the channel should be created.

One Level Up - Channels

Back to Main Index


Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern - Quest3D

Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern

From Quest3D

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Hierarchical Visitor
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Node.cgr
    • 1.5 Object.cgr
    • 1.6 Primitive.cgr
    • 1.7 Traversal.cgr
    • 1.8 drawTraversal.cgr
    • 1.9 Scenegraph.cgr
    • 1.10 start.cgr
      • 1.10.1 Globals
      • 1.10.2 Init
      • 1.10.3 Update & Render
      • 1.10.4 User input
    • 1.11 Thoughts and recommendations
      • 1.11.1 Traversals
      • 1.11.2 Nodes
    • 1.12 Examples
    • 1.13 External Links

Hierarchical Visitor

Introduction

A well known implementation of the Hierarchical Visitor-pattern is a scenegraph, which in big 3D projects is a must for defining object-hierarchies and optimization of your render routine.

The 'Hierarchical Visitor'-patterns defines a "Node": an entity which is aware of both his parent- and child-nodes. Using a Traversal-function we can then iterate, recursively, through these nodes apply operations on all, or a selection of, nodes.

The most common uses for a scenegraph implementation are:

  • parenting: You can for instance parent all the furniture to a room-node. When we then displace, or even disable, this node, all it's children will get updated based on the parentdata;
  • spatial awareness: collision detection, displaying the player on a map, etc;
  • spatial partitioning: only render (and use all the logic routines) what the camera can see.

Functional description and context

In this tutorial we'll use primitives to both fill the nodes and visualize the scenegraph. This to visually show what happens when you set, update or even disable the parent(root)node.

I know that none of the 'cool' techniques, like spatial awareness or -partition are shown in this tutorial (although some collision detection is used for modelpicking). The reason for this is that a scenegraph is a difficult concept to grasp, due to the decoupling of the nodes and way we iterator through them. Therefor it's kept as simple as possible and is chosen to use the geometry to visually display the scenegraph to make it easier to understand what's going on 'under the hood'.

So what do we need?

  • A simple geometry object which supports matrix-parenting;
  • A decoupled iterator which makes it possible to traverse through the geometry objects in different ways (depth-first, breadth-first, etc);
  • A manager class to initialize the scenegraph and call the different traversals.

Design

As shown in the diagram:

The Primitive class consists of:

  • INode, which contains the tree-pattern logic (parent- and child-references). The third member is an 'active'-flag. When we disable it, this node, and subsequently all childnodes, will be skipped by the traversals;
  • IObject, a default object interface with two additional options: the ability to store the parentmatrix and the extraction of the object's collisiongeometry;
  • IPrimitive, a default primitive interface.

The DrawTraversal consists of:

  • ITraversal, which gives us the ability to define any form of hierarchical traversal based on a start(root)node.

The Scenegraph class, which is the heart of the system. This manager-pattern, manages all the created nodes, initializes the different traversals and supplies functions to add nodes to the tree.

The example will only show one Traversal-implementation, the draw_Traversal. But, using the "ITraversal"-interface, it's possible to define other traversals (update, cull, etc) aswell.

Node.cgr

Let's start with the implementation of the "INode"-interface.

The "INode"-interface has three members:

  • active - when true, the node is active. If not, it, and all underlying children will be skipped by the traversal;
  • childern - A reference container, containing the child references;
  • parent - The parentreference.

1. Create the "INode"-interface:

Object.cgr

"IObject" is a basic object-interface, containing:

  • position - a vector containing the object's position;
  • rotation - a vector containing the object's rotation;
  • size - a vector containing the object's size (default: 1,1,1);
  • parent - the parenting-matrix, which will be set on every update.

2. Create the "IObject"-interface:

3. Implement the "draw"-function to render a NULL object;

4. Implement the "getMatrix"-function:

Note: make sure to connect the IObject-parent to the returnmatrix.

5. Implement the "getCollisionObject"-function:

What we basically do in this function is to 'render' the object a second time, but this time we add this information to the returning "CollisionObject".

I agree that 'rendering' the object two times per frameupdate is not the nicest way to go. One could opt for saving the 3dobjectdata as a member of IObject and setting this on initialization. The downside to this is that object-creation needs to call the init()-function for it to work.

Primitive.cgr

"IPrimitive" assumes a class inherits from "IObject" aswell, and therefor only contains additional members to make primitive-rendering possible:

  • type - the primitivetype;
  • subdivision - the amount of primitive subdivisions;
  • color - the primitive's emissive color (default: 1,1,1 (white)).

6. Create the "IPrimitive"-interface:

7. Create the "CPrimitive"-class, which implements the "INode"-, "IObject"- and "IPrimitive"-interfaces;

8. Overload the "draw"-function and implement it:

Note: make sure to connect the IObject-parent to the primitive's motion.

9. Overload the "getCollisionObject"-function and implement it:

Traversal.cgr

"ITraversal" defines the way we iterate through the nodes, it's implementation (drawTraversal) will define the operations on each node. The default traversaltype for this tutorial will be a "breadth-first"-traversal: for each node we first update all the children in a left-to-right pattern, after which we go down a tier.

It's possible to define different traversal-types (depthfirst, inorder, etc), by defining a new interface and derive a a class from it.

The same goes for the traversal-implementations. If you for instance want to separate the update() and draw() operations, just create a new class "updateTraversal", which derives the "ITraversal"-interface and implement the "do"-fuction.

Using this construction we decouple the operations from the actual-traverse: by simply switching the interface, you can select a different traversal-algorithm, without having to reimplement the operational actions on the nodes.

10. Create the "ITraversal"-interface:

Note: both the "traverse"- and "do"-functions require a Node (OO InterfaceRefItem) as parameter.

11. Implement the "traverse"-function:

The "do"-function will be overloaded by the class, and will contain the operations used on the traversed nodes.

drawTraversal.cgr

12. Create the "drawTraversal"-class, which implements the "ITraversal"-interface.

13. Overload the "do"-function and implement it:

The "do"-function has four actions:

  • A check to ensure we're traversing an INode-derivative;
  • Update of the parent-matrix in IObject;
  • The draw-call to render the primitive;
  • A draw-call to render a line between the parent and it's child node.

As noted in the traversal-section, one could opt for splitting the update and draw actions, by defining a "updateTraversal"-class. Especially when you don't update each frame or you render your scene multiple times per frame, this is most definately the way to go.

Scenegraph.cgr

The Scenegraph is a manager-class, and the hearth of our system. It:

  • initializes the traversals;
  • exposes two functions to add new nodes to the scenegraph;
  • exposes functions for the different traversals.

14. Create the "IScenegraph"-interface:

Notes:

  • the "addNode"-function requires a "ref"-parameter (OO InstanceRefItem);
  • the "addNodeToParent-function requires a "parent"- (OO ClassInstance) and "ref"-paremeter (OO InstanceRefItem).

15. Create the "CScenegraph"-class, which implements "IScenegraph".

16. Implement the "clear"-function:

17. Implement the "init"-function:

18. Implement the "addNode"-function:

Note: this function is used to add the 'root'-node to the scenegraph. If this function is called a second time, the rootnode will be override and thus all the children connected to the former root-node will be invalidated.

19. Implement the "addNodeToParent"-function:

Note: this function is used to add nodes to the 'root'-node of the scenegraph.

20. Implement the "draw"-function:

Note: as you can see, this functionimplementation is pretty straightforward, since all the logic of the traversal is embedded in the traversal-implementation.

start.cgr

The start CGR is, as always, the cgr that puts it all together. The difference this time is that we need a lot more logic in this cgr to make our scenegraph. So let's get started.

Globals

To spawn the boxes aligned to their neighbors, three global variables are defined:

  • margin - the margin between te boxes (in units);
  • x_idx - the current x index (units);
  • y_idx - the current y index (units).

21. Create the global project variables.

Init

In the init routine we need to:

  • Init the scenegraph;
  • Create the rootnode;
  • Set the global variables x-idx and y_idx.

22. Implement the init logic:

Update & Render

The render logic is pretty straigthforward:

  • Enable lighting;
  • Call Scenegraph->draw();
  • Disable lighting.

23. Implement the render logic.

User input

The control logic is, compared to init and render, a lot of channellogic. We want to:

Reset the system

Since the "init"-logic is implemented with a OneTime, resetting the system is easy.

24. Implement the "reset the system"-control logic and bind this action to the 'r'-key.

Create a new node and attach it to the current rootnode

Creating a childnode is similar to creating the rootnode in "init", with the following differences:

  • Use the "AddRootToParent"-function and supply "root_ref" as parent reference;
  • Set the child's parent to "root_ref" using the "Assign Reference Item"-command;
  • Set the child's position using the following formula:
pos(x,y,z) = (x_idx, y_idx-margin, 0);

x_idx += margin.

25. Implement the "create a new node"-control logic and bind this action to the 'spacebar'-key.

Select a new rootnode

Now this is where it get's interesting. We want to select a new rootnode by means of objectpicking. We're using the collisionraycheck to accomplish this. If you're not familiar with the collisionraycheck channel, check the "Pick mesh with mouse"-example in the Quest3D\examples\advanced directory.

Mousepicking an object in the scenegraph is pretty straightforward. Use the getNodes()-function to get all the nodes from the Scenegraph, iterate through them and do a collisioncheck on each object.

When there is collision detected:

  • Set the old rootnode's color to white(1,1,1);
  • Set the new rootnode's color to red(1,0,0);
  • Assign root_ref to the new rootnode's reference;
  • Set the global variable x_idx and y_idx, where:
 x_idx = rootnode(num children) * margin;

 y_idx = rootnode(y) - margin.

26. Implement the "select a new rootnode"-control logic and bind this action to the 'left mouse button'.

Transform the rootnode

27. Implement the "transform the rootnode"-control logic and bind these actions as follows:

  • left/right - move the rootnode left or right (stepsize = 0.5 units);
  • up/down - move the rootnode up or down (stepsize = 0.5 units);
  • alt + left/right - rotate the rootnode on the Y axis (stepsize = 20 degrees).

Deactivate the rootnode

Deactivating the rootnode, and it's children, is done by setting the 'active'-member of the rootnode to '0'.

28. Implement the "deactive the rootnode"-control logic and bind the action to the 'h'-key. Better yet, make it so it toggles it on/off.

And that's it. You've made yourself a scenegraph in Quest3D, which should show you output like this:

Thoughts and recommendations

The implementation of the scenegraph in this tutorial has several constraints:

Traversals

Although the functionality for multiple traversals is built into the traversal-classes, only one traversal, the draw-traversal, is implemented. To optimize the performance of the scenegraph one should split this traversal into three separate traversals:

  • Cull-traversal, which should be depthfrist traversal;
  • Render-traversal, which should be depthfirst traversal;
  • Update-traversal, which should be a breadthfirst or inorder traversal.

By then calling the traversals in the the following order: cull, update, render, the amount of objects to be updated and rendered will be cut back considerably, which in turn will lead to a performance-increase.

Nodes

Only one type of node is implemented: the geometry node. Depending on what you want the scenegraph to use for, you could opt for implementing additional nodetypes, like:

  • Animation;
  • Switch (LOD, DOF);
  • Group (Transformation, StateChanges, BSP-controls).

Examples

patterns_scenegraph.zip

External Links

Scenegraph

  • Hierarchical Visitor-pattern on wikipedia
  • Scenegraph on wikipedia
  • Scenegraph resources on gamedev.net
  • Scenegraph Lecture, Anders Backman, Dept. of Computer Sciences, Umea University, Sweden

Other

  • Traversal on wikipedia
  • Spatial Partitioning on wikipedia

Categories: Tutorials | OO


High Dynamic Range Process - Quest3D

High Dynamic Range Process

Contents

  • 1 High Dynamic Range Process
    • 1.1 Description
    • 1.2 Children
    • 1.3 Interface
      • 1.3.1 Prepare
      • 1.3.2 Bloom
      • 1.3.3 Streaks
      • 1.3.4 Lense reflections
      • 1.3.5 Display
  • 2 Examples
  • 3 See Also

High Dynamic Range Process

Description

This channel must be linked to a RenderTexture Channel and will add High Dynamic Range Rendering effects your scene.

This channel takes a HDR image and shows it on screen. There are 5 steps involved: 1. Prepare 2. Bloom 3. Streaks 4. Lens reflections 5. Display

Children

  1. Source - Texture
    • Source HDR image

Interface

Prepare

In this step the source HDR is matched to a certain luminosity and some filtering is applied to single out the bright areas. These areas are used in the later passes to generate the bloom, streaks and lens reflections. There are two filters available in this step:

  • 128p exposure + Gaussian filter
  • 128p exposure

Both filters scale the source HDR image down to 128x128 pixels. The first filter has an additional Gaussian filter to make the resulting image a bit more smooth. Here is a description of the different sliders:

Target luminance

Is the desired luminance of the image a lower and a higher value makes it brighter.

Adaptation speed

This value allows you to set the speed at which the target luminance human eye for example needs some time to reduce the size value you can simulate this adaptation time. A small value while a large value means a quick adaptation.

Threshold

This applies a negative offset and clamps at 0. You can use high intensities. Usually you only want to apply bloom to very Applying bloom to both lower and higher intensities can result look.

Offset

Use this setting as a brightness after the exposure function. you to darken or brighten the end result.

Minimum exposure

Normally the exposure range is unlimited. This means that exposure will get lower and lower until the image looks natural. have physical limitations. This value allows you to set the minimum possible.

Maximum exposure

Same as above. Allows you to set the maximum exposure

Bloom

This effect takes the result from the pass and applies a blur. The result halo around all bright areas of the There are two effects available:

  • 128p 3 tap Gaussian
  • 128p 3 tap Gaussian LDR

Both effects are the same, however the LDR function outputs HDR. Use this version on cards that do not support interpolation Each successive tap has a higher blur radius. By combining create very nice looking glow effects.

Brightness tap 1

This is the brightness of the first tap.

Brightness tap 2

This is the brightness of the second tap.

Brightness tap 3

This is the brightness of the third tap.

Overall Gamma

Allows you to change the gamma of the output image

Streaks

This effect takes the result from the prepare pass and turns them into streaks. This effect is the most calculation intensive of all effects. The more streaks you have the more performance this effect requires. There are two effects available:

  • 128p streaks
  • 128p streaks LDR

Both effects are the same, however the LDR function outputs an HDR. Use this version on cards that do not support interpolation This effect simply takes the result of the prepare step and smears streak. Multiple streaks are created by repeating this process.

Attenuation

This determines how fast the streak fades out

Brightness

This is the brightness of the result.

Streak count

The number of streaks. The streaks are divided results in two opposing streaks.

Rotation

The rotation of the streaks

Iterations

Number of passed used to smear out the streak only need a few passes which is quicker. If you screen you need up to 4 passes.

Iterations

The output color modulation of the streaks

Lense reflections

This effect takes the result from the prepare pass and turns them into lens reflections. Lens reflections are duplicates of the image scaled around the center of the screen. There are three effects available:

  • 128p 13x13 Reflections LDR
  • 128p 13x13 Reflections
  • 128p 6x6 Reflections

Both effects are the same, however the LDR function outputs an image that is not HDR. Use this version on cards that do not support interpolation of HDR textures.

Brightness

This is the brightness of the result.

Gamma

Gamma that is applied before the multiplication

Max brightness

The maximum brightness of the input image. Use this to reduce the that are extremely bright and this result in very bright reflections.

Display

This final pass them on screen. available:

  • Bloom
  • Flare
  • Lens Reflections
  • Full effect
  • Pass trough
  • Prepared

Bloom

Show the output of the bloom effect only.

Flare

Show the output of the flare effect only.

Lens reflections

Show the output of the lens reflections effect only.

Full effect

Show the combination of bloom, flare and lens reflection and combines it with an exposed version of the input images. For a description of all settings look at the prepare effect, the settings are almost the same. The full effect also has a setting to set the gamma of the end result.

Pass through

Display the input image (directly converted to 8 bit)

Prepared

Shows the result of the prepare step.

Examples

Look in <YourQuest3DDirectory>/Examples/New in 3.5/HDR with LDR output.cgr and <YourQuest3DDirectory>/Examples/New in 3.5/HDR with HDR output.cgr

See Also

  • Introduction to HDR Rendering

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | New in version 3.5


HLSLObject - Quest3D

HLSLObject

Contents

  • 1 HLSLObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Techniques
      • 1.3.2 Materials
      • 1.3.3 Postprocessing
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 See Also

HLSLObject

General

Channel used to render FX file based shaders.

Children

  1. ObjectData - 3D ObjectData
    • Object data. The shader will not compile if there is no Objectdata connected!
  2. HLSL fx file - Text
    • FX file text
  3. Technique to use - Value
    • Index of the technique to use
  4. Values - Value
    • Value parameters for the shader
  5. Vectors - Value Vector
    • Vector parameters for the shader
  6. Matrices - Matrix
    • Matrix parameters for the shader

Description

This channel implements the DirectX .FX file framework in Quest3D. Put this channel between an ObjectData type channel and a surface to use custom FX file shading.

Techniques

A shader can hold several shaders. You can switch between shaders for other levels of detail for example. The most common use of techniques is to make shaders backwards compatible. For example a shader can contain a 1.0, a 2.0 and a 3.0 shader model version. When you specify an index of -1 the regular Quest3D shading is used in stead of the custom FX file.

An FX file can contain many instructions on how to draw a mesh. Usually an FX file contains two parts: a vertex shader and a pixel shader. The FX file format is very flexible. The FX file author is free to implement only a pixel shader or a vertex shader. When there is no shader specified, the default shader is used.

FX files can be used for two purposes:

  • Advanced surfaces
  • 2D screen effect i.e. “post processing”

Materials

Advanced surfaces in Quest3D are implemented through the new material system that was introduced with version 3.0. The material system allows you to easily use FX files without having to deal with the details.

To apply a material, you can select a surface in the object section and click on a thumbnail in the material browser. It’s that simple.

The material system allows you to use the same material on multiple surfaces. All properties are shared between surfaces that share the same Material. You can specify unique textures for each surface though. Apply the textures as you would normally do. Pay attention to the stages.

The complex nature of many shaders means that materials do not only use simple color maps. Some materials require normal maps, gradient maps or a cube map for example. When you remove a texture from a surface, the default texture is used.

We advise you to use the material system. With every update of Quest3D new shaders will be added and each shader will get more and more complete. However, you are free to use the HLSL channel outside the material system if you want to.

Postprocessing

Post processing is an easy and powerful method to enhance your images. Post processing effects do not operate on the actual objects but they operate on the final rendered image. Some effects even use multiple render targets and combinations of multiple effects to get the desired result. A post processing effect usually performs the following operations:

  • Copy the image on screen to a temporary texture
  • Use the HLSL channel to render the temporary texture to screen

With FX files designed for post processing you can create very interesting effects. The big benefit of post processing is that the performance only depends on the resolution and the complexity of the shader. Post processing effects are effortless addition to enhance the look of your project.

Post processing effects are available in the template folder of Quest3D. Simply drag the template

CallChannel

To use this channel, it should be connected to a surface so it should not be called.

Applications

Enhance the final image using 2D effects. Create other artistic effects such as a 2D drop shadow or alpha masks.

See Also

  • Quest3D Semantics

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | HLSL | Shaders | Scripting


Reference Manual/Customization/Hot keys - Quest3D

Reference Manual/Customization/Hot keys

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Hot keys
    • 1.1 General
    • 1.2 Mouse navigation keys
    • 1.3 Default General Hotkeys
    • 1.4 Default General Hotkeys
    • 1.5 Default Animation Hotkeys
    • 1.6 Default Object Hotkeys

Hot keys

General

You can customize the hot keys by selecting Keyboard...from the options menu. All shortcuts are unique in Quest3D. It does not matter where the mouse is located. There are some keys that cannot be configured. These are the keys that should be used in conjunction with the mouse.

Mouse navigation keys

Mouse navigation | Action
Scroll Wheel | Zoom in and out
Alt + Right Mouse Button | Zoom in and out
Middle Mouse Button | Move view

For the channelgraph:

Mouse navigation | Action
Alt + Left Mouse Button | Move view

For the orbit and isometric 3D views:

Mouse navigation | Action
Alt + Left Mouse Button | Orbit View
Shift + Left Mouse Button | Move view in XZ plane
Shift + Right Mouse Button | Move view in Y direction

For the 1st Person Fly View:

Mouse navigation | Action
Alt + Left Mouse Button | Look around
Alt + Right Mouse Button | Move Forward
Alt + Middle Mouse Button | Move Backward
Alt + Left | Move Left
Alt + Left | Move Right

Default General Hotkeys

Key | Action
F2 | Go to the first section (Channel section)
F3 | Go to the second section (Animation section)
F4 | Go to the third section (Object Section)
F5 | Go to the fourth section (User defined desktop 1)
F6 | Go to the fifth section (User defined desktop 2)
F7 | Go to the sixth section (User defined desktop 3)
F8 | Go to the seventh section (User defined desktop 4)
F9 | Go to the eighth section (User defined desktop 5)
F11 | Go to the ninth section (User defined desktop 6)
F12 | Go to the tenth section (User defined desktop 7)
Ctrl-N | New Project
Ctrl-O | Open As Project
Ctrl-Shift-S | Save All
Ctrl-S | Save
Ctrl-Shift-M | Open and Merge
Ctrl-I | Import
Ctrl-Q | Exit Program
F1 | Help about item under mouse
F12 | Options

Default General Hotkeys

Key(s) | Action
Ctrl-C | Copy Selection
Ctrl-V | Paste Selection
Ctrl-X | Cut Selection
DEL | Delete Selection
SPACE | Create Dir From Selection
SPACE | Drop channel or template on mouse pointer position of selection in channel or template list
Ctrl-A | Select All
Ctrl-Home | View Channel Names
Ctrl-End | View Channel Types
Ctrl-End | View
L | Quick Link Key
` | Create Shortcut
Zoom In
- | Zoom Out
Left Move | View Left
Right Move | View Right
Up Move | View Up
Down Move | View Down
I | Invert Selection
A | View All
Shift-A | View Selection
Tab | Arrange Selection
P | Channel is Public On/Off
Shift-P | Convert to parameter
D | Create Directory
Insert | New Text
Shift-P | Channel Properties
Home | Channel Base Properties
Page Up | Channel Children Links
Ctrl-F2 | Set selected channel as start channel
Page Down | Page Down Rename channel
Ctrl-F3 | Search Channel
Ctrl-F4 | Take Snapshot
Ctrl-T | Toggle all selected channels Updateing

Default Animation Hotkeys

Key(s) | Action
1 | Perspective View
2 | Camera View
3 | 1st Person View
4 | Top View
5 | Front View
6 | Left View
Numpad 7 | Clear Envelopes
Numpad 8 | Backup Envelopes
Numpad 9 | Restore Envelope Backup
Shift-C | Copy Selected Keys
Shift-DEL | Delete Selected Keys
G | Grid Off
Shift G | Grid On
Shift-Bckspc | Reset Key TCB
Num-1 | Move Mode
Num-2 | Rotate Mode
Num-3 | Scale Mode
Ctrl-Backspc | Reset Key
Ctrl-L | Local Coordinates
Shift-Ctrl-L | World Coordinates
Num-4 | World Size Up
Num-6 | World Size Down
Ctrl-1 | Culled Solid Rendering
Ctrl-2 | Culled Wire Rendering
Ctrl-3 | Wire Rendering

Default Object Hotkeys

Keys(s) | Action
Ctrl-G | Grid On
Ctrl-Shift-G | Grid Off
Ctrl 4 | Culled Solid Rendering
Ctrl 5 | Wire Rendering
Ctrl 6 | Culled Wire Rendering
Ctrl 7 | Color Wire rendering

Back to Main Index

Category: Reference Manual


Hybrid - Quest3D

Hybrid

Contents

  • 1 Present
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

Present

General

The hybrid channel is able to put a channelgroup inside the hybrid channel.

Children

  1. All Types Channel - Depends on the Hybrid parameters.

Description

The hybrid channel is a really powerfull channel. It will allow you to package funcationality together. Protect your channelgroups and create an interface on top of the channelgroup.

When you first start the hybrid channel you get this interface:

Here you can select which channelgroup you want to put inside the hybrid channel. You can also select which channel main type you want this channel to be called.

Here you can see an example channel group which you want to use in a hybrid channel:

You can see that there is a parameter channel defined. This channel will be the childeren for our hybrid channel. You can also see the HLSLObject channel. In this channel you can define the dialog interface of our channel.

Here you can see the result from using this channelgroup inside the hybrid channel.

In the template folder under scene you can find the hybrid template folder. It contains all examples and templates needed to build this example.

The reload button will only be available if you have the source channelgroup on your computer.

CallChannel

Calling the channel will call the start channel of the hybrid group.

Remarks

The hybrid would allow you to create complex template and distribute them to other users/customers without sharing your channel groups. The group inside the hybrid is not retrievable.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | New in version 3.5


Icons - Quest3D

Icons

Icons

The following icons are used in the OO Editor and the Project Tree

1: Unsaved ChannelGroup
2: Unsaved ChannelGroup that contains OO related definitions
3: Saved ChannelGroup
4: Saved ChannelGroup that contains OO related definitions
5: Unsaved StartGroup
6: Unsaved StartGroup that contains OO related definitions
7: Saved StartGroup
8: Saved StartGroup that contains OO related definitions
8: Protected ChannelGroup.
9: Red folders contain either channelgroups that are not saved in the project directory or channelgroups that are not saved at all.
9: Interface
9: Class
10: Vector
11: Value
12: Matrix
12: Function
12: Function Target
12: Function parameter
12: Channel
12: Cannot drop here
12: Add an item
12: Remove an item
12: Insert an item


If - Quest3D

If

Contents

  • 1 If
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips
    • 1.7 Examples

If

General

Call the second child when the first child's value is set to 1 (or higher)

Children

  1. Selector - Value
    • Value to check for being bigger or the same as 1.
  2. Child - All Types Channel
    • Channel to call when value is bigger or the same as 1.

Description

With this channel you can create simple logic to call another branch in the channel graph of your program. This statement is often used in programming languages and is also often used when creating a channelgroup.

You can also take a look at the IfElse channel if you want another part of your channel graph called when the value of the first child channel is not 1 (one) or higher.

CallChannel

Will call the "Child" when the value of the "Selector" child is 1 or higher.

Remarks

1 (one) is also called the "True" value of channel and 0 (zero) the "False" value.

Tips

  • If you create a graph with multiple If channels in one branch make sure you put channels that take the most processor time last.
  • A match with an value compare with the Expression Value channel will result in a 1 (one; the true value). So you can easily compare two (or more) values using the Expression Value channel and linking it to this channel at the first child position.

Examples

Use of If and IfElse

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


IfElse - Quest3D

IfElse

Contents

  • 1 IfElse
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips
    • 1.7 Examples

IfElse

General

If the "Selector" value is bigger or the same as 1 it will call "If True" child else the "If False"

Children

  1. Selector - Value
    • Value to check.
  2. If True - All Types Channel
    • Channel to call if child one is bigger or the same as 1.
  3. If False - All Types Channel
    • Channel to call if child one is smaller the 1.

Description

With this channel you can create simple logic to call another branch in the channel graph of your program. This statement is often used in programming languages and is also often used when creating a channelgroup.

You can also take a look at the If channel if you don't want to call another channel graph branch when the "Selector" child is 'false'.

CallChannel

Will call the "If True" child when the value of the "Selector" child is 1 or higher, and if not it will call the "If False" child.

Remarks

1 (one) is also called the "True" value of channel and 0 (zero) the "False" value.

Tips

  • If you create a graph with multiple If channels in one branch make sure you put channels that take the most processor time last.
  • A match with an value compare with the Expression Value channel will result in a 1 (one; the true value). So you can easily compare two (or more) values using the Expression Value channel and linking it to this channel at the first child position.

Examples

Use of If and IfElse

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


1.1 intro.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

1.1 intro.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.1: Introduction


1.9 channelgraph.jpg - Quest3D

1.9 channelgraph.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.9: 3D scenes


2dtextdiag.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

2dtextdiag.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3DTextFromTexture


2dtextdiagmap.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

2dtextdiagmap.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3DTextFromTexture


3d animation window.jpg - Quest3D

3d animation window.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Animation 3D View


3dgraphimage.jpg - Quest3D

3dgraphimage.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/3D Graph Painting


027.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

027.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


028.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

028.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


029.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

029.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


Activex.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Activex.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ActiveX


Activexevents.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Activexevents.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ActiveX


Add.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Add.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Addclearscreen.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Addclearscreen.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Addinterface.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Addinterface.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Addmember.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Addmember.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Addooeditor.jpg - Quest3D

Addooeditor.jpg

  • Image
  • File history
  • Links

Add Object Orientation Editor

Links

The following pages link to this file:

  • Project Tree
  • OO Editor


Addwithfadein.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Addwithfadein.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Advanced Motion Tutorial 2, cropping motions

Links

The following pages link to this file:

  • Tutorials/Advanced Motion Tutorial 2


AdvancedMotionDataDialog.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

AdvancedMotionDataDialog.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Advanced Motion tutorial

Links

The following pages link to this file:

  • Tutorials/Advanced Motion Tutorial


AnimationSection.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

AnimationSection.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Animationsection.jpg - Quest3D

Animationsection.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section


Array buffer properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array buffer properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Buffer


Array channel properties.jpg - Quest3D

Array channel properties.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Channel


Array column.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array column.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Column


Array import properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array import properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Import


Array infovalue properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array infovalue properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array InfoValue


Array matrix properties.gif - Quest3D

Array matrix properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Matrix


Array pointer int.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array pointer int.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Channel interface of the Array Pointer Channel

Links

The following pages link to this file:

  • Array Pointer


Array table properties.jpg - Quest3D

Array table properties.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Table


Array text properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array text properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Text


Array value properties.gif - Quest3D

Array value properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Value


Array valueoperator properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array valueoperator properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array ValueOperator


Array vector properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array vector properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Vector


Array vectoroperator properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Array vectoroperator properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array VectorOperator


Arraycommandproperties.jpg - Quest3D

Arraycommandproperties.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Array Command


Ball.jpg - Quest3D

Ball.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Surface List


BallandSocket.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

BallandSocket.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Ball and Socket


Basicchannel.jpg - Quest3D

Basicchannel.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


Bonelength.gif - Quest3D

Bonelength.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Bonesetup.gif - Quest3D

Bonesetup.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Bonesintro.jpg - Quest3D

Bonesintro.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Bonetest.jpg - Quest3D

Bonetest.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Box Dif.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Box Dif.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

diffuse UV set

Links

The following pages link to this file:

  • Tutorials/Lightwave 3D exporting lightmaps


Box LM.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Box LM.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Lightmap UV Set

Links

The following pages link to this file:

  • Tutorials/Lightwave 3D exporting lightmaps


Camera.gif - Quest3D

Camera.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Camera


Camera list.gif - Quest3D

Camera list.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Camera List


Cameratab.jpg - Quest3D

Cameratab.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Camera List


Channel.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Channel.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Channel graph title bar.gif - Quest3D

Channel graph title bar.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Channel Graph


Channel interface window.gif - Quest3D

Channel interface window.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group Interface


Channel list.gif - Quest3D

Channel list.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Channel List


Channel mode toolbar.gif - Quest3D

Channel mode toolbar.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


Channel shortcut.gif - Quest3D

Channel shortcut.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


Channelexample.jpg - Quest3D

Channelexample.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Introduction and overview


Channelgroup Interface.jpg - Quest3D

Channelgroup Interface.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


ChannelGroupNotSaved.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ChannelGroupNotSaved.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


ChannelGroupNotSavedOO.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ChannelGroupNotSavedOO.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


ChannelGroupSaved.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ChannelGroupSaved.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


ChannelGroupSavedOO.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ChannelGroupSavedOO.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Channels debug window.gif - Quest3D

Channels debug window.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General/Debug window


Channels on middle.gif - Quest3D

Channels on middle.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Templates


Channels template window.gif - Quest3D

Channels template window.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Templates
  • Reference Manual/Editor/Channels Section/Template List


Channelswitch interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Channelswitch interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • CallOnGetChild
  • ChannelSwitch


Childexample.jpg - Quest3D

Childexample.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/What are channels


Choosechanneltype.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Choosechanneltype.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Choosefunctiontype.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Choosefunctiontype.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Choosetarget.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Choosetarget.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Class.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Class.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Class Instances List01.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Class Instances List01.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Interface from Class Instances List

Links

The following pages link to this file:

  • OO Class Instances List


Classeditor.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Classeditor.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


ClassInstance01.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ClassInstance01.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Interface of Classinstance

Links

The following pages link to this file:

  • OO ClassInstance


Collision1.jpg - Quest3D

Collision1.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • CollisionResponse


Collision2.jpg - Quest3D

Collision2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • CollisionResponse


Coloralphablending.gif - Quest3D

Coloralphablending.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Texture Properties


Common file dialog.gif - Quest3D

Common file dialog.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • FileDialog


Correct.jpg - Quest3D

Correct.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Costomizetoolbar.gif - Quest3D

Costomizetoolbar.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Tool bars


Cow1.jpg - Quest3D

Cow1.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


CreateColumn.jpg - Quest3D

CreateColumn.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Custom geometry.jpg - Quest3D

Custom geometry.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Introduction


Db buffer properties.gif - Quest3D

Db buffer properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DB Buffer


Db info properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Db info properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DB Info


Db odbcdriver properties.gif - Quest3D

Db odbcdriver properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DB DriverODBC


Db query properties.gif - Quest3D

Db query properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DB Query


Db text properties.gif - Quest3D

Db text properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DB Text


Db value properties.gif - Quest3D

Db value properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DB Value


Dbase monitor.gif - Quest3D

Dbase monitor.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General/Database Monitor


Definition tree.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Definition tree.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

The definition tree

Links

The following pages link to this file:

  • OO Editor


Detail05.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Detail05.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DynamicLOD


Detail10.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Detail10.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DynamicLOD


Detail025.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Detail025.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DynamicLOD


Detail0125.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Detail0125.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DynamicLOD


Display properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Display properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Installation


Dlodenv.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dlodenv.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • DynamicLOD


Dual channel link.gif - Quest3D

Dual channel link.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


Dx8 clearscreen properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 clearscreen properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ClearScreen


Dx8 clothobject properties.gif - Quest3D

Dx8 clothobject properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ClothObject


Dx8 collisionobject propert.gif - Quest3D

Dx8 collisionobject propert.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • CollisionObject


Dx8 collisionraycheck prope.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 collisionraycheck prope.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • CollisionRayCheck


Dx8 command interface2.gif - Quest3D

Dx8 command interface2.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work
  • Command


Dx8 fastcollisionresponse p.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 fastcollisionresponse p.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • FastCollisionResponse


Dx8 forcefeedback properties.gif - Quest3D

Dx8 forcefeedback properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ForceFeedback


Dx8 gofullscreen interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 gofullscreen interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • GoFullScreen


Dx8 media texture capture.gif - Quest3D

Dx8 media texture capture.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MediaTexture


Dx8 media texture main.gif - Quest3D

Dx8 media texture main.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MediaTexture


Dx8 media texture movie.gif - Quest3D

Dx8 media texture movie.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MediaTexture


Dx8 media texturecommand main.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 media texturecommand main.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MediaTexture Command


Dx8 mediatextureinfotext.gif - Quest3D

Dx8 mediatextureinfotext.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MediaTexture Info Text


Dx8 mediatextureinfovalue.gif - Quest3D

Dx8 mediatextureinfovalue.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MediaTexture Info Value


Dx8 motionset properties.gif - Quest3D

Dx8 motionset properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MotionSet


Dx8 mp3control interface.gif - Quest3D

Dx8 mp3control interface.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MP3 Player Command


Dx8 mp3player interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 mp3player interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Mp3 Player


Dx8 network matrix properties.gif - Quest3D

Dx8 network matrix properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Matrix


Dx8 primitive interface.gif - Quest3D

Dx8 primitive interface.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Primitive


Dx8 shader properties.gif - Quest3D

Dx8 shader properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ShaderSurface


Dx8 userinput interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Dx8 userinput interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • UserInput


Easysurfacesettings.gif - Quest3D

Easysurfacesettings.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Surface Properties


Editmatrix.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Editmatrix.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Editmultiline.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Editmultiline.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Editor options animation.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Editor options animation.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Preferences


Editor options channels.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Editor options channels.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Preferences


Editor options object.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Editor options object.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Preferences


Editor options quest3d.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Editor options quest3d.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Preferences


Editorscreenshots.jpg - Quest3D

Editorscreenshots.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Introduction and overview


Envelope control properties.gif - Quest3D

Envelope control properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope Command


Envelope slider controls.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Envelope slider controls.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Envelope Slider


Envelopedialog.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Envelopedialog.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


Envgui1.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Envgui1.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


Envgui2.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Envgui2.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


Envgui3.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Envgui3.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Envelope


Example1.jpg - Quest3D

Example1.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.3: Quest3D installation


Example2.jpg - Quest3D

Example2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.4: Example scenes


Example3.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example3.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example7.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example7.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example8.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example8.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example11.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example11.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example12.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example12.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example13.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example13.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example14.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example14.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example15.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example15.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example16.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example16.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example17.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example17.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example19.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example19.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example20.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example20.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example21.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example21.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example22.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example22.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example24.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example24.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example25.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example25.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example26.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example26.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example27.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example27.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Example28.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example28.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example29a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example29a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example30a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example30a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example31.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example31.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example32.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example32.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example33.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example33.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example34b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example34b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example35.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example35.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example36.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example36.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example37a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example37a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example38.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example38.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example39.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example39.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example40.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example40.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example41.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example41.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example42.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example42.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example43.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example43.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example44.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example44.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example45.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example45.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example46.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example46.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example47.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example47.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example48.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example48.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example49a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example49a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example49b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example49b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example50.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example50.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example51.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example51.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example52.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example52.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example53.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example53.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.7: Program flow


Example54.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example54.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.7: Program flow


Example55a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example55a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.7: Program flow


Example55b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example55b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.7: Program flow


Example56.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example56.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.7: Program flow


Example57.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example57.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.7: Program flow


Example58.jpg - Quest3D

Example58.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.9: 3D scenes


Example59.jpg - Quest3D

Example59.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.9: 3D scenes


Example60.jpg - Quest3D

Example60.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.9: 3D scenes


Example62.jpg - Quest3D

Example62.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.9: 3D scenes


Example63a.jpg - Quest3D

Example63a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Example64.jpg - Quest3D

Example64.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Example65.jpg - Quest3D

Example65.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Example66.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example66.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example67.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example67.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example68.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example68.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example69.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example69.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example70.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example70.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example71.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example71.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example72a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example72a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example72b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example72b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example73.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example73.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example74a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example74a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example75.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example75.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example76.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example76.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example77.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example77.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example78.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example78.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.1: 3D Objects


Example79.jpg - Quest3D

Example79.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example80.jpg - Quest3D

Example80.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example81.jpg - Quest3D

Example81.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example82.jpg - Quest3D

Example82.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example83.jpg - Quest3D

Example83.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example84.jpg - Quest3D

Example84.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example85.jpg - Quest3D

Example85.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example86.jpg - Quest3D

Example86.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example87.jpg - Quest3D

Example87.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.2: Animation


Example88.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example88.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.3: Object import


Example88a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example88a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example88b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example88b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example89.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example89.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.3: Object import


Example89a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example89a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example90b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example90b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example91.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example91.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.3: Object import


Example91a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example91a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example92.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example92.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example93.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example93.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example94.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example94.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example95.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example95.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example96.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example96.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example97.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example97.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example98.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example98.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example99.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example99.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example100.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example100.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example101.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example101.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example102.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example102.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example103.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example103.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example104.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example104.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example105.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example105.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example106.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example106.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example107.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example107.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example108.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example108.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example109.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example109.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.4: Surface properties


Example110.jpg - Quest3D

Example110.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example111.jpg - Quest3D

Example111.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example112.jpg - Quest3D

Example112.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example113.jpg - Quest3D

Example113.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example114.jpg - Quest3D

Example114.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example115.jpg - Quest3D

Example115.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example116.jpg - Quest3D

Example116.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example117.jpg - Quest3D

Example117.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example118.jpg - Quest3D

Example118.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.5: Lighting and shadows


Example119a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example119a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.6: Cameras


Example120.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example120.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.6: Cameras


Example121.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example121.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.6: Cameras


Example122a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example122a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.7: Graphic user interface


Example122c.jpg - Quest3D

Example122c.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.8: Sound and music


Example123a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example123a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.7: Graphic user interface


Example123c.jpg - Quest3D

Example123c.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.8: Sound and music


Example124a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example124a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.7: Graphic user interface


Example124d.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example124d.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example125.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example125.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example126.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example126.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example127.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example127.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example128.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example128.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example129.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example129.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example130a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example130a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example131.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example131.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.9: Landscapes


Example132.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example132.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.10: Particle systems


Example133.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example133.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.10: Particle systems


Example134.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example134.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.10: Particle systems


Example135.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example135.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.10: Particle systems


Example137.jpg - Quest3D

Example137.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example138a.jpg - Quest3D

Example138a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example139b.jpg - Quest3D

Example139b.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example140a.jpg - Quest3D

Example140a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example141.jpg - Quest3D

Example141.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example142.jpg - Quest3D

Example142.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example142v.jpg - Quest3D

Example142v.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example143.jpg - Quest3D

Example143.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example144a.jpg - Quest3D

Example144a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example145.jpg - Quest3D

Example145.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example145a.jpg - Quest3D

Example145a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example145d.jpg - Quest3D

Example145d.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 2.11: Character animation


Example146.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example146.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example147.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example147.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example147a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example147a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example148.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example148.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example148b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example148b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example149.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example149.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example149a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example149a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example150.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example150.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example151.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example151.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example152.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example152.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example153.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example153.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example154.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example154.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example155a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example155a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example156a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example156a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example157.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example157.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.1: Logic


Example180a.jpg - Quest3D

Example180a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example196a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example196a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example197.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example197.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example198.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example198.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example199.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example199.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example200.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example200.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example201.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example201.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example201a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example201a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example202.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example202.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example203.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example203.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example204.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example204.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example205.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example205.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example205a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example205a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example207.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example207.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.5: Multiple channel groups


Example208.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example208.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example209.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example209.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example210.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example210.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example211.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example211.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example212.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example212.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example213.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example213.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example214.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example214.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example215.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example215.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example216.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example216.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example217.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example217.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example218.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example218.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example219.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example219.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example220.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example220.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.6: Mathematical operators


Example222a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example222a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example223a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example223a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example224a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example224a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example225a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example225a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example226a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example226a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example227a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example227a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example228a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example228a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.7: Pathfinding


Example229a.jpg - Quest3D

Example229a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example230a.jpg - Quest3D

Example230a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example231a.jpg - Quest3D

Example231a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example232a.jpg - Quest3D

Example232a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example233a.jpg - Quest3D

Example233a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example234a.jpg - Quest3D

Example234a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example235a.jpg - Quest3D

Example235a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.8: Finite State Machine


Example241b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example241b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.1: Project management


Example242.jpg - Quest3D

Example242.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example243.jpg - Quest3D

Example243.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example244.jpg - Quest3D

Example244.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example245.jpg - Quest3D

Example245.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example246.jpg - Quest3D

Example246.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example247.jpg - Quest3D

Example247.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example248.jpg - Quest3D

Example248.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example249.jpg - Quest3D

Example249.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example250.jpg - Quest3D

Example250.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example251.jpg - Quest3D

Example251.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example252.jpg - Quest3D

Example252.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example253.jpg - Quest3D

Example253.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example254.jpg - Quest3D

Example254.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example255.jpg - Quest3D

Example255.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.2: Physics simulation


Example260.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example260.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.3: Database connectivity


Example261.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example261.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.3: Database connectivity


Example262.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example262.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.3: Database connectivity


Example263.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example263.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.3: Database connectivity


Example264.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example264.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.3: Database connectivity


Example265.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example265.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.3: Database connectivity


Example270.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example270.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example271.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example271.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example272.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example272.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example273.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example273.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example274.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example274.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example275.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example275.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example276.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example276.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.4: Networking


Example280.jpg - Quest3D

Example280.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.5: Lua scripting


Example280a.jpg - Quest3D

Example280a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.5: Lua scripting


Example281.jpg - Quest3D

Example281.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.5: Lua scripting


Example283a.jpg - Quest3D

Example283a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.5: Lua scripting


Example284.jpg - Quest3D

Example284.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.5: Lua scripting


Example285.jpg - Quest3D

Example285.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 4.5: Lua scripting


Example421.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example421.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example451.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example451.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.6: Channels


Example.158a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.158a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.158b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.158b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.160a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.160a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.161a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.161a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.161b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.161b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.162a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.162a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.163a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.163a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.164a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.164a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.165a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.165a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.165b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.165b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.166a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.166a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.167a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.167a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.167b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.167b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.168a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.168a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.169a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.169a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.170a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.170a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.171a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.171a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.172a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.172a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.173a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.173a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.174a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.174a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.175a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.175a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.176a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.176a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.176b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Example.176b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.2: Math


Example.177.jpg - Quest3D

Example.177.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.178.jpg - Quest3D

Example.178.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.179.jpg - Quest3D

Example.179.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.180.jpg - Quest3D

Example.180.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.181.jpg - Quest3D

Example.181.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.181a.jpg - Quest3D

Example.181a.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.182.jpg - Quest3D

Example.182.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.183.jpg - Quest3D

Example.183.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.184.jpg - Quest3D

Example.184.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.185.jpg - Quest3D

Example.185.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.3: For Loop


Example.186b.jpg - Quest3D

Example.186b.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.187.jpg - Quest3D

Example.187.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.188.jpg - Quest3D

Example.188.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.189.jpg - Quest3D

Example.189.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.190.jpg - Quest3D

Example.190.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.191.jpg - Quest3D

Example.191.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.192.jpg - Quest3D

Example.192.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Example.195.jpg - Quest3D

Example.195.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Chapter 3.4: Arrays


Exporting Exporter options.png - Quest3D

Exporting Exporter options.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Exporting:Documentation
  • Quest3D Plug-in for 3D Studio MAX


Exporting Exporter select.jpg - Quest3D

Exporting Exporter select.jpg

  • Image
  • File history
  • Links

Select Quest3D exporter

Links

The following pages link to this file:

  • Exporting:Documentation


Exporting material shell.jpg - Quest3D

Exporting material shell.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Exporting:Documentation


Expression.gif - Quest3D

Expression.gif

  • Image
  • File history
  • Links

The Expression Channel interface.

Links

The following pages link to this file:

  • Expression Value


Expressionexample01.gif - Quest3D

Expressionexample01.gif

  • Image
  • File history
  • Links

Example of an Expression Value used as an input for an If channel

Links

The following pages link to this file:

  • Expression Value


FasTRAK command dialog.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

FasTRAK command dialog.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • FasTRAK Command


Fastskinninginter.jpg - Quest3D

Fastskinninginter.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • FastSkinning


FileMenu.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

FileMenu.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


FobCommandInterface.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

FobCommandInterface.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Interface dialog of the Flock of Birds Command channel

Links

The following pages link to this file:

  • Flock of Birds Command


Fogintensity.gif - Quest3D

Fogintensity.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Camera List


Fogoff2.jpg - Quest3D

Fogoff2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Camera


Fogon2.jpg - Quest3D

Fogon2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Camera


FolderRedClose.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

FolderRedClose.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Forbidden.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Forbidden.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Function.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Function.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Functiontarget.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Functiontarget.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


FunctionTarget.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

FunctionTarget.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


General toolbar.gif - Quest3D

General toolbar.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General


Glove driver 5dt properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Glove driver 5dt properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Glove Driver 5DT


Glove source properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Glove source properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Glove Source


Glove value properties.jpg - Quest3D

Glove value properties.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Glove Value


Grouptype1.jpg - Quest3D

Grouptype1.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


Grouptype2.jpg - Quest3D

Grouptype2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


Grouptype3.jpg - Quest3D

Grouptype3.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


Grouptype4.jpg - Quest3D

Grouptype4.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


Guiconfigmode.gif - Quest3D

Guiconfigmode.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Editor lay-out


Guid properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Guid properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • UniqueID


HDRBloom.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

HDRBloom.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

HDR Bloom interface

Links

The following pages link to this file:

  • High Dynamic Range Process


HDRLenseReflections.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

HDRLenseReflections.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • High Dynamic Range Process


HDRPrepare.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

HDRPrepare.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

HDR Prepare interface

Links

The following pages link to this file:

  • High Dynamic Range Process


HDRStreaks.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

HDRStreaks.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • High Dynamic Range Process


Helloworld.jpg - Quest3D

Helloworld.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3DText


Helloworld2.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Helloworld2.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3DTextFromTexture


Highzoom.gif - Quest3D

Highzoom.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Camera


Hinge.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Hinge.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Hinge


Hpb.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Hpb.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Motion


Hybridexample.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Hybridexample.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Hybrid


Hybridgroup.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Hybridgroup.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Hybrid


Hybridinterface.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Hybridinterface.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Hybrid


Ignore tree count channel.jpg - Quest3D

Ignore tree count channel.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


Image014.jpg - Quest3D

Image014.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Object List


Image015.jpg - Quest3D

Image015.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Light List


Image020.gif - Quest3D

Image020.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Camera List


Image021 copy.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image021 copy.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation


Image022.jpg - Quest3D

Image022.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Value Sliders


Image024.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image024.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Reference Manual/Editor/Animation Section/Envelope Slider
  • Envelope


Image025.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image025.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Reference Manual/Editor/Animation Section/Envelope Slider
  • Envelope


Image026.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image026.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Reference Manual/Editor/Animation Section/Envelope Slider
  • Envelope


Image027.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image027.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Envelope Slider


Image028.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image028.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Envelope Slider


Image029.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image029.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Envelope Slider


Image032.gif - Quest3D

Image032.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Motion Values


Image034.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Image034.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Envelope Slider


Incorrect.jpg - Quest3D

Incorrect.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Inertia channel interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Inertia channel interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Inertia


Influences.jpg - Quest3D

Influences.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Infowindow.gif - Quest3D

Infowindow.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Channel Information


InsertInstance.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

InsertInstance.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Installer startmenu.jpg - Quest3D

Installer startmenu.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


InstallScreen.jpg - Quest3D

InstallScreen.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.3: Quest3D installation


InstanceRefItem01.jpg - Quest3D

InstanceRefItem01.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO InstanceRefItem


InstanceRefItem02.jpg - Quest3D

InstanceRefItem02.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO InstanceRefItem


Interface.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Interface.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


InterfaceChannel01.jpg - Quest3D

InterfaceChannel01.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO InterfaceChannel


Interfaces.jpg - Quest3D

Interfaces.jpg

  • Image
  • File history
  • Links

Interfaces Tree

Links

The following pages link to this file:

  • Project Tree


Interfacetreecontextmenu.jpg - Quest3D

Interfacetreecontextmenu.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Project Tree


InterfaceType01.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

InterfaceType01.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO InterfaceType


Keyframes2.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Keyframes2.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Value Sliders
  • Reference Manual/Editor/Animation Section/Envelope Slider


Light list.gif - Quest3D

Light list.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Light List


Lightmap.jpg - Quest3D

Lightmap.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General/Channel Tools


Linkcolors.jpg - Quest3D

Linkcolors.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/What are channels
  • Reference Manual/Getting Started/Basics/Linking


Linking multiple.gif - Quest3D

Linking multiple.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Linking


Log Bar.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Log Bar.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Lowzoom.gif - Quest3D

Lowzoom.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Camera


Lstenerdialof.gif - Quest3D

Lstenerdialof.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Listener


Material properties.gif - Quest3D

Material properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Material or Shader Properties


Materialswindow.jpg - Quest3D

Materialswindow.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Materials Window


Matrix.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Matrix.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Matrix copy.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Matrix copy.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Matrix


Md2vertexanim.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Md2vertexanim.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • VertexAnimation


Menueditmultiline.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Menueditmultiline.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Message log.gif - Quest3D

Message log.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General/Message Log


Messagebox interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Messagebox interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Win32 MessageBox


Messagebox output.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Messagebox output.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Win32 MessageBox


Midi-Control-Dialog-V1.01b.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Midi-Control-Dialog-V1.01b.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MIDI Player Command


Midi-File-Dialog-V1.01b.jpg - Quest3D

Midi-File-Dialog-V1.01b.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MIDI Player


Minuteman Command Interface.JPG - Quest3D

Minuteman Command Interface.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Minuteman Command


Mode buttons.gif - Quest3D

Mode buttons.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Mode Buttons


Motion values window.gif - Quest3D

Motion values window.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Motion Values


MotionBlenderChannelGroup1.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

MotionBlenderChannelGroup1.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Channel group of advanced motion tutorial

Links

The following pages link to this file:

  • Tutorials/Advanced Motion Tutorial


MotionBlenderChannelGroup2.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

MotionBlenderChannelGroup2.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Advanced Motion Tutorial


Motioneditor.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Motioneditor.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Advanced Motion Tutorial 2: Crop and fade with the looping envelope

Links

The following pages link to this file:

  • Tutorials/Advanced Motion Tutorial 2


Motionplanningint.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Motionplanningint.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • MotionPlanning


Mouse properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Mouse properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Installation


Nature painting window.gif - Quest3D

Nature painting window.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Nature Painting


Network actions properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Network actions properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Command


Network buffer properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Network buffer properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Buffer


Network info.gif - Quest3D

Network info.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General/Network Information


Network info text propertie.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Network info text propertie.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Info Text


Network info value properties.jpg - Quest3D

Network info value properties.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Info Value


Network text properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Network text properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Text


Network value properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Network value properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Value


New folder.gif - Quest3D

New folder.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section


NewTextDialog3.5.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewTextDialog3.5.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Text


Newtextout.jpg - Quest3D

Newtextout.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Textout


Newtexturewindow.jpg - Quest3D

Newtexturewindow.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Texture List


NewtonBallAndSocket.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonBallAndSocket.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Ball and Socket


NewtonBody.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonBody.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Body


NewtonBodyCommand.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonBodyCommand.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Body Command


NewtonBodyValue.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonBodyValue.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Body Value


NewtonBodyVector.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonBodyVector.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Body Vector


NewtonCollisionPrimitive.png - Quest3D

NewtonCollisionPrimitive.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Collision Primitive


NewtonCommand.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonCommand.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Command


NewtonContactValue.png - Quest3D

NewtonContactValue.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Contact Value


NewtonContactVector.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonContactVector.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Contact Vector


NewtonConvexHull.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonConvexHull.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Collision Convex Hull


NewtonHinge.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonHinge.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Hinge


NewtonJointCommand.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonJointCommand.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Joint Command


NewtonMaterialContact.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonMaterialContact.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Material Contact


NewtonMotor.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonMotor.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Motor


NewtonRope.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonRope.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Rope


NewtonRopeBodyAccessor.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonRopeBodyAccessor.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Point Rope Body Accessor
  • Newton Rope Body Accessor


NewtonSlider.png - Quest3D

NewtonSlider.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Slider


NewtonUpVector.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

NewtonUpVector.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton UpVector


Objectlayout.gif - Quest3D

Objectlayout.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3D Object


ObjectSection1a.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ObjectSection1a.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Ode body example.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode body example.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Body


Ode body properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode body properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Body


Ode command properties.gif - Quest3D

Ode command properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Command


Ode info value properties.gif - Quest3D

Ode info value properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Info Value


Ode joint properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode joint properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Joint


Ode-ball-and-socket.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode-ball-and-socket.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Joint


Ode-editor.gif - Quest3D

Ode-editor.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Dynamics Settings


Ode-hinge.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode-hinge.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Joint


Ode-hinge2.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode-hinge2.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Joint


Ode-slider.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ode-slider.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ODE Joint


Oggcontrol interface.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Oggcontrol interface.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OGG Player Command


Oggproperties interface.jpg - Quest3D

Oggproperties interface.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OGG Player


OO 001 IPrimitive result.png - Quest3D

OO 001 IPrimitive result.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO ClassType.png - Quest3D

OO ClassType.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO ClassType


OO patterns facade 001.jpg - Quest3D

OO patterns facade 001.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Facade Pattern


OO patterns facade 002.jpg - Quest3D

OO patterns facade 002.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Facade Pattern


OO patterns facade 003.jpg - Quest3D

OO patterns facade 003.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Facade Pattern


OO patterns facade 004.jpg - Quest3D

OO patterns facade 004.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Facade Pattern


OO patterns hiervisitor 001.jpg - Quest3D

OO patterns hiervisitor 001.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 002.jpg - Quest3D

OO patterns hiervisitor 002.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 003.jpg - Quest3D

OO patterns hiervisitor 003.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 004.jpg - Quest3D

OO patterns hiervisitor 004.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 005.jpg - Quest3D

OO patterns hiervisitor 005.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 006.jpg - Quest3D

OO patterns hiervisitor 006.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern
  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns hiervisitor 007.jpg - Quest3D

OO patterns hiervisitor 007.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 008.jpg - Quest3D

OO patterns hiervisitor 008.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 009.jpg - Quest3D

OO patterns hiervisitor 009.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 010.jpg - Quest3D

OO patterns hiervisitor 010.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 011.jpg - Quest3D

OO patterns hiervisitor 011.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 012.jpg - Quest3D

OO patterns hiervisitor 012.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 013.jpg - Quest3D

OO patterns hiervisitor 013.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 014.jpg - Quest3D

OO patterns hiervisitor 014.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 015.jpg - Quest3D

OO patterns hiervisitor 015.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 016.jpg - Quest3D

OO patterns hiervisitor 016.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 017.jpg - Quest3D

OO patterns hiervisitor 017.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 018.jpg - Quest3D

OO patterns hiervisitor 018.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns hiervisitor 019.jpg - Quest3D

OO patterns hiervisitor 019.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Hierarchical Visitor Pattern


OO patterns manager 001.jpg - Quest3D

OO patterns manager 001.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns manager 002.jpg - Quest3D

OO patterns manager 002.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns manager 003.jpg - Quest3D

OO patterns manager 003.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns manager 004.jpg - Quest3D

OO patterns manager 004.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns manager 005.jpg - Quest3D

OO patterns manager 005.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns manager 006.jpg - Quest3D

OO patterns manager 006.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns manager 007.jpg - Quest3D

OO patterns manager 007.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Manager Pattern


OO patterns observer 001.jpg - Quest3D

OO patterns observer 001.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 002.jpg - Quest3D

OO patterns observer 002.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 003.jpg - Quest3D

OO patterns observer 003.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 004.jpg - Quest3D

OO patterns observer 004.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 005.jpg - Quest3D

OO patterns observer 005.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 006.jpg - Quest3D

OO patterns observer 006.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 007.jpg - Quest3D

OO patterns observer 007.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 008.jpg - Quest3D

OO patterns observer 008.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 009.jpg - Quest3D

OO patterns observer 009.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns observer 010.jpg - Quest3D

OO patterns observer 010.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Observer Pattern


OO patterns singleton 001.jpg - Quest3D

OO patterns singleton 001.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Singleton Pattern


OO patterns singleton 002.jpg - Quest3D

OO patterns singleton 002.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Singleton Pattern


OO patterns singleton 003.jpg - Quest3D

OO patterns singleton 003.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Singleton Pattern


OO tut001 001.jpg - Quest3D

OO tut001 001.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 002 01.jpg - Quest3D

OO tut001 002 01.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 002 02.jpg - Quest3D

OO tut001 002 02.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 003.jpg - Quest3D

OO tut001 003.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 004.jpg - Quest3D

OO tut001 004.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 005.jpg - Quest3D

OO tut001 005.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 006.jpg - Quest3D

OO tut001 006.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 007.jpg - Quest3D

OO tut001 007.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 008.jpg - Quest3D

OO tut001 008.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 009.jpg - Quest3D

OO tut001 009.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 010.jpg - Quest3D

OO tut001 010.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 011.jpg - Quest3D

OO tut001 011.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 012.jpg - Quest3D

OO tut001 012.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 013.jpg - Quest3D

OO tut001 013.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 014.jpg - Quest3D

OO tut001 014.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 015.jpg - Quest3D

OO tut001 015.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 016.jpg - Quest3D

OO tut001 016.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 017.jpg - Quest3D

OO tut001 017.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 018.jpg - Quest3D

OO tut001 018.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 019.jpg - Quest3D

OO tut001 019.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 021.jpg - Quest3D

OO tut001 021.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 022.jpg - Quest3D

OO tut001 022.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 023.jpg - Quest3D

OO tut001 023.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 024.jpg - Quest3D

OO tut001 024.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 025.jpg - Quest3D

OO tut001 025.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 026.jpg - Quest3D

OO tut001 026.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 027.jpg - Quest3D

OO tut001 027.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 028.jpg - Quest3D

OO tut001 028.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 029.jpg - Quest3D

OO tut001 029.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 030.jpg - Quest3D

OO tut001 030.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 031.jpg - Quest3D

OO tut001 031.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut001 032.jpg - Quest3D

OO tut001 032.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


OO tut002 001.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 001.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 002.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 002.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 003.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 003.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 004.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 004.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 005.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 005.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 006.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 006.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 007.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 007.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 008.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 008.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 009.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 009.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 010.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 010.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 011.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 011.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 012.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 012.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 013.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 013.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 014.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 014.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 015.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 015.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 016.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 016.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 017.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 017.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization


OO tut002 018.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut002 018.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Specialization
  • Tutorials/Object Oriented Programming/Introduction


OO tut003 001.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 001.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 002.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 002.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 003.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 003.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 004.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 004.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 005.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 005.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 006.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 006.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 007.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 007.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut003 008.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OO tut003 008.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Multiple inheritance


OO tut303 00.jpg - Quest3D

OO tut303 00.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 01.jpg - Quest3D

OO tut303 01.jpg

  • Image
  • File history
  • Links

Diagram of a factory pattern

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 02.jpg - Quest3D

OO tut303 02.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 03.jpg - Quest3D

OO tut303 03.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 04.jpg - Quest3D

OO tut303 04.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 05.jpg - Quest3D

OO tut303 05.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 06.jpg - Quest3D

OO tut303 06.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 07.jpg - Quest3D

OO tut303 07.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 08.jpg - Quest3D

OO tut303 08.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 09.jpg - Quest3D

OO tut303 09.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 10.jpg - Quest3D

OO tut303 10.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 11.jpg - Quest3D

OO tut303 11.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 12.jpg - Quest3D

OO tut303 12.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 13.jpg - Quest3D

OO tut303 13.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 14.jpg - Quest3D

OO tut303 14.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 15.jpg - Quest3D

OO tut303 15.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 16.jpg - Quest3D

OO tut303 16.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 17.jpg - Quest3D

OO tut303 17.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


OO tut303 18.jpg - Quest3D

OO tut303 18.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Factory Pattern


Oocommand.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Oocommand.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

OOCommand interface

Links

The following pages link to this file:

  • OO InterfaceCommand


Ooeditor.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Ooeditor.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

OO Editor Interface Editor

Links

The following pages link to this file:

  • OO Editor


Oofunction.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Oofunction.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

OO Function Interface

Links

The following pages link to this file:

  • OO InterfaceFunction


OOTelevision.JPG - Quest3D

OOTelevision.JPG

  • Image
  • File history
  • Links

A television as an OO example

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Introduction


Override.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Override.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Parameter.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Parameter.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Patriot Command Interface.JPG - Quest3D

Patriot Command Interface.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Patriot Command


Primitivedraw.jpg - Quest3D

Primitivedraw.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Introduction


Project Start.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Project Start.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Project tree.gif - Quest3D

Project tree.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


ProtectedChannelGroup.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ProtectedChannelGroup.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Public.jpg - Quest3D

Public.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Channel Groups


Publicillu.gif - Quest3D

Publicillu.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Channel Groups


Publisher installer.jpg - Quest3D

Publisher installer.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Publisher installer dialog.jpg - Quest3D

Publisher installer dialog.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Publisher screensave preview.jpg - Quest3D

Publisher screensave preview.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Publisher screensaver.jpg - Quest3D

Publisher screensaver.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


Publisher select files.jpg - Quest3D

Publisher select files.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.10: Publication


PublishGeneralProperties.JPG - Quest3D

PublishGeneralProperties.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Publishing Quest3D Projects


PublishProjectExample.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

PublishProjectExample.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Publishing Quest3D Projects


PublishProjectInstaller.JPG - Quest3D

PublishProjectInstaller.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Publishing Quest3D Projects


PublishScreenSaver.JPG - Quest3D

PublishScreenSaver.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Publishing Quest3D Projects


PublishWizardSelectFiles.JPG - Quest3D

PublishWizardSelectFiles.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Publishing Quest3D Projects
  • Articles/Publishing projects that dynamically load CGR files


PublishWizardSummary.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

PublishWizardSummary.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Publishing Quest3D Projects


Quest3deditor.JPG - Quest3D

Quest3deditor.JPG

  • Image
  • File history
  • Links

Screen shot of the Quest3D editor.

Links

The following pages link to this file:

  • Faq


Quest3dscreenshots.jpg - Quest3D

Quest3dscreenshots.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Introduction and overview


Questsaver properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Questsaver properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • InScreenSaverPreview


RedundantLogic.JPG - Quest3D

RedundantLogic.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Introduction


Reject alpha.jpg - Quest3D

Reject alpha.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Surface Properties


Remove.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Remove.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Removeoverride.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Removeoverride.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • OO Editor


Renderloop2.jpg - Quest3D

Renderloop2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Introduction


RightMouseS.gif - Quest3D

RightMouseS.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


Rope.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Rope.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Rope


RSSFeetReturnLink.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

RSSFeetReturnLink.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • RSS Item


Screen Shot 01.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Screen Shot 01.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Sreeny1

Links

The following pages link to this file:

  • Tutorials/Lightwave 3D exporting lightmaps


Screen Shot 02.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Screen Shot 02.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

screeny2

Links

The following pages link to this file:

  • Tutorials/Lightwave 3D exporting lightmaps


Screen Shot 03.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Screen Shot 03.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Screen_Shot_03.jpg

Links

The following pages link to this file:

  • Tutorials/Lightwave 3D exporting lightmaps


Sdk channel class structure.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Sdk channel class structure.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

The basic channel class structure

Links

The following pages link to this file:

  • SDK/Channels/Class Structure


Sdk derived class structure.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Sdk derived class structure.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

The class structure of a derived channel

Links

The following pages link to this file:

  • SDK/Channels/Class Structure


Selectskinningtab.gif - Quest3D

Selectskinningtab.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Selobjtoskin.gif - Quest3D

Selobjtoskin.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Serial port properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Serial port properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Serial Port


Setrestposition.gif - Quest3D

Setrestposition.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


Slider.jpg - Quest3D

Slider.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Newton Slider


Socketaction int.JPG - Quest3D

Socketaction int.JPG

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • SocketAction


Soundcommand.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Soundcommand.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Sound Command


Soundfile.gif - Quest3D

Soundfile.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Sound File


Sparks.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Sparks.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ParticleObject


Splash9.jpg - Quest3D

Splash9.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Main Page


Sprite render anim texture.jpg - Quest3D

Sprite render anim texture.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ParticleSpriteRenderer


Start3dscene properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Start3dscene properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Start3DScene


Startgroup icon.gif - Quest3D

Startgroup icon.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Channels Section/Group List


StartGroupNotSaved.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

StartGroupNotSaved.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


StartGroupNotSavedOO.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

StartGroupNotSavedOO.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


StartGroupSaved.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

StartGroupSaved.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


StartGroupSavedOO.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

StartGroupSavedOO.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Stencilshadow.jpg - Quest3D

Stencilshadow.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • StencilShadow


Step1.jpg - Quest3D

Step1.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work


Step2.jpg - Quest3D

Step2.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work


Step3.gif - Quest3D

Step3.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work


Step4.gif - Quest3D

Step4.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work


Step5.gif - Quest3D

Step5.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work


Step6.gif - Quest3D

Step6.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Make it work


Subset.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Subset.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Advanced motion blender tutorial 2, Cropping motions

Links

The following pages link to this file:

  • Tutorials/Advanced Motion Tutorial 2


Surface list.gif - Quest3D

Surface list.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Surface List


Surface properties advanced.gif - Quest3D

Surface properties advanced.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Surface Properties


Surface Tab.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Surface Tab.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Sysinfo.gif - Quest3D

Sysinfo.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • SysInfo


Tab window.gif - Quest3D

Tab window.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/General/Tab Window


Tab Windows1.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tab Windows1.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.5: The Quest3D user interface


Tcb.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tcb.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Envelope Slider
  • Envelope


Textfilter properties.gif - Quest3D

Textfilter properties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • TextFilter


Textout2dexample.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Textout2dexample.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3DTextFromTexture


Textoutexample.gif - Quest3D

Textoutexample.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3DText


Texture interface.jpg - Quest3D

Texture interface.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Texture


Texturemapping.gif - Quest3D

Texturemapping.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Object Section/Texture Properties


Timer.gif - Quest3D

Timer.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Timer Value


Timercommand.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Timercommand.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Timer Command


Timerstructure.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Timerstructure.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Timer Value
  • Timer Command


Tinybighead.jpg - Quest3D

Tinybighead.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • CharacterSkin


Toolbarproperties.gif - Quest3D

Toolbarproperties.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Customization/Tool bars


Tracker vector properties.jpg - Quest3D

Tracker vector properties.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tracker Vector


Trail.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Trail.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ParticleObject


Triggergui.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Triggergui.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Getting Started/Basics/Animation
  • Trigger


Tut001 diagram.jpg - Quest3D

Tut001 diagram.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Object Oriented Programming/Object creation and rendering


Tutorialmanualcover.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorialmanualcover.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual
  • Reference Manual
  • Tutorials


Twork trigger properties.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Twork trigger properties.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Network Trigger


Value.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Value.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Value interface.gif - Quest3D

Value interface.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Value


ValueVector.jpg - Quest3D

ValueVector.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Value Vector


Vector.png - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Vector.png

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Icons


Vectoroperator.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Vectoroperator.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • VectorOperator


Vschannel.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Vschannel.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • SDK/Quick Start


VSChannelDialog.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

VSChannelDialog.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • SDK/Quick Start


VSNewProject.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

VSNewProject.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • SDK/Quick Start


VSOptions.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

VSOptions.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Visual Studio 2004 Options dialog

Links

The following pages link to this file:

  • SDK/Quick Start


Warning.png - Quest3D

Warning.png

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Template:Incomplete
  • Advanced Motion Blender
  • Advanced Motion Data
  • Advanced Motion Data Combiner
  • AdvancedMotionCommand
  • AdvancedMotionInfoValue
  • GUI
  • GUISkin
  • Newton Rope
  • Newton Up Vector
  • OO SectionManager
  • RSS Feed Info
  • SocketReceiver
  • SysInfo
  • System Command
  • OO ThisClassInstance
  • Wake Waves
  • MotionSetBlender
  • ChannelTemplate
  • OO InstanceRefContainer
  • OO InterfaceCommand


Warning.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Warning.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

warning symbol

Links

The following pages link to this file:

  • Template:Depreciated
  • Reference Manual/Editor/Channels Section/Group List
  • Tracker Driver Patriot


WatershaderInterface.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WatershaderInterface.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WatershaderOverview.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WatershaderOverview.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WaterShaderTechniques1.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WaterShaderTechniques1.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Picture of reflection map + refraction map

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WaterShaderTechniques2.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WaterShaderTechniques2.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Reflection map + alpha blending

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WaterShaderTechniques3.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WaterShaderTechniques3.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Reflection map + alpha blending 2

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WaterShaderTechniques4.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WaterShaderTechniques4.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Reflection cube + alpha blending

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WaterShaderTechniques5.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WaterShaderTechniques5.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Color only + alpha blending

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


WaterShaderTechniques6.JPG - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

WaterShaderTechniques6.JPG

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Wireframe

Links

The following pages link to this file:

  • Articles/Water rendering in Quest3D


Weightcalc.gif - Quest3D

Weightcalc.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Reference Manual/Editor/Animation Section/Skinning


WiiMote Command.jpg - Quest3D

WiiMote Command.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • WiiMote Command


Win32 font command properties.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Win32 font command properties.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Win32 FontCommand


Win32 font interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Win32 font interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Win32 Font


Win32 setwindow.gif - Quest3D

Win32 setwindow.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Win32 SetWindow


Winampinfo interface.gif - Quest3D

Winampinfo interface.gif

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • WinAmp Info Text


Winampspectrum interface.gif - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Winampspectrum interface.gif

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • WinAmp Spectrum


WinStartButton.jpg - Quest3D

WinStartButton.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • Tutorials/Manual/Chapter 1.3: Quest3D installation


Wrongailine.jpg - Quest3D

Wrongailine.jpg

  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • 3D Graph
  • Reference Manual/Editor/3D Graph Painting


Zsparks1.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Zsparks1.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ParticleObject


Zsparks2.jpg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Zsparks2.jpg

From Quest3D

Jump to: navigation, search
  • Image
  • File history
  • Links

Links

The following pages link to this file:

  • ParticleObject


Reference Manual/Getting Started/Importing - Quest3D

Reference Manual/Getting Started/Importing

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Importing
    • 1.1 Default Import File Formats
    • 1.2 3D Studio Max Plug-in
    • 1.3 Main format: .X (DirectX) files
    • 1.4 Other Formats
    • 1.5 PolyTrans Importing
      • 1.5.1 Add Quest3D support to PolyTrans
      • 1.5.2 Importing with polytrans
      • 1.5.3 Importing huge 3d models
      • 1.5.4 Download and Purchase PolyTrans
    • 1.6 Loadable Files

Importing

Quest3D can import and load a number of different file formats. If a file is imported a new channelgroup is created with channels that hold the imported data. There are also a number of channels that can load a file directly. Both by loading and importing all data is loaded in a channelgroup so no other files are needed when a channelgroup is distributed.

Default Import File Formats

Quest3D supports a number of file formats that can be imported. An importer will load the selected file and convert the file into a channelgroup. Once imported this channelgroup will hold one or more channels.

3D Studio Max Plug-in

Quest3D Extensions for 3D Studio Max is a complete environment in 3DsMAX® to create and export 3D scenes directly into Quest3D (CGR files). It contains:

  • An exporter that exports directly to Quest3D (generating CGR files).
  • A dedicated material "Quest3D material" with a user interface very similar to Quest3D's object section.

You can read about and download it here

Main format: .X (DirectX) files

This is the main file format of Quest3D. We recommend you use this file format for importing files into Quest3D. There are several importers available for all major 3d modeling tools. Most of these importers can be found in the "Extras" folder of Quest3D.

There are also many software packages available that will allow you to convert 3D files into the .X file format. Most of these converter packages have native .X file format support. PolyTrans or Deep Exploration are just two of them...

Other Formats

The following file formats are also supported, although limited.

  • 3DS
  • LWO (LightWave 5.x object)
  • MOT (LightWave 5.x motion)
  • LS (Lightscape)

PolyTrans Importing

Quest3D is able to import models through the Okino software product; PolyTrans. This software package makes it possible to import a large number of different 3D formats directly into Quest3D. All major 3D modeling packages and CAD packages are supported.

Add Quest3D support to PolyTrans

Before you can use PolyTrans together with Quest3D, you will need to install some files into the PolyTrans installation folder. Follow these steps to correctly add Quest3D support to PolyTrans...

Copy the following files from the "Extras/PolyTrans" folder. This folder is located under your Quest3D installation folder, usually "\Program Files\Act-3D\Quest3D"

  • exp_q3d.dll
  • exp_q3d.ini
  • exp_q3d.rti

And place them in the "VCPLUGIN" folder in your PolyTrans installation folder, usually "\Program Files\PolyTrans".

After you have copied these files you are able to start Quest3D or PolyTrans. We recommend you also configure PolyTrans. Start PolyTrans and change the following options:

  • Menu "Edit" > "Preferences" > "Geometry import/export" > "Dialog"

Make sure only Triangulator 3 is selected

  • Menu "Edit" > "Preferences" > "Animation Resampling" > "Dialog"

Make sure the "Re-sample all animation data at every frame for:" option is selected, and all options under that option. Also make sure that the "Remove redundant keyframes from re-sampled data" is NOT selected.

Importing with polytrans

Importing trough polytrans is done trough the "File" menu "PolyTrans" then selecting the correct file format that you want to import.

When in 3D Studio Max, Maya or another Polytrans supported 3D tool you are able to export directly into Quest3D. This option will ask for a file which is only temporarily used. Quest3D has to be running and active for this feature to work. At this time this option is not recommended for skinned characters due to a conversion problem. Best practice is to export into the polytrans BDF format and import this BDF file in Quest3D itself. The same method is available trough the polytrans program.

Importing huge 3d models

When you want to import larger (of even huge) CAD or other models into Quest3D, please first start PolyTrans first to make the import faster. Then load the large 3D model using PolyTrans. Often huge models have many surfaces which all have the same color, these can be collapsed in PolyTrans to reduce the number of surfaces in Quest3D. You can also use the Polygon Reduction tool in PolyTrans to further reduce the number of polygons. First save your reduced model to disk, and make sure to use the native BDF file format. You can then close PolyTrans and open Quest3D and import the BDF file through the PolyTrans import in the "File" menu.

Download and Purchase PolyTrans

You are able to download a demo version of PolyTrans from the Okino website :

http://www.okino.com.

Loadable Files

With the default set of channels the following file formats can be loaded with a channel.

  • MP3 (MPEG layer 3 sound)

Use a MP3 File to load a MP3 sound or music file. There are two different ways to load a MP3 file with this channel. You can link a Text channel that holds the filename of the MP3 file. Or you can use the properties dialog to select the MP3 file. If you want to save the MP3 file in the channelgroup you will have to use the properties dialog and make sure the option is turned on. See the MP3 File and MP3PlayerControl channel help for more information.

  • WAV (Waveform sound)

WAV files can be loaded with the Sound channel. Just drag this channel into the channel graph window and go the channel properties window. Here you can select the “Load” button to load a “.wav” file. The loaded WAV data is saved in the channelgroup. You are able to test the loaded file by clicking on the “Play” button.

Please note that a WAV file can be encoded with a number of different “codecs”. Most windows installation have a set of codecs installed. But the MP3 codes is not always supported. If you load a WAV file that is encoded with such a MP3 codec you must make sure for yourself this codes is also installed at the users who are using this channelgroup. If you are not sure how to do this, please use the MP3 File channel to load a MP3 file directly without the need for such a codec.

  • TGA, JPG, BMP, DDS, PNG (Textures)

You can import a number of different texture formats. This can be done in two different ways with the same result: a Texture channel holding a texture in the current channelgroup.

If you drag a new Texture channel into the channel graph window and use the channel properties dialog you will be able to select a texture with the “Load” button. This will show a file dialog where you can select the wanted file. When a file was successfully loaded, it will be displayed (scaled) in the properties dialog.

In the Object Section you can select an empty texture spot or the Texture "Load New Texture Button" in the Texture List. This will also show a file dialog. When the texture was successfully loaded it will be shown in the first free empty spot in the Texture List.

There are some limitations to these formats. The width and height of a texture for usage with DirectX are always in the power of 2, for example 256x256, 64x8 or 128x512. When a texture is loaded with other dimensions it will be rescaled to the best match. Some older 3D cards have a maximum texture size of 256x256. A JPEG texture has a minimum width of 8. When a loaded texture is quite large (1024 or higher)

After a texture is loaded the original data will always be kept in the channelgroup. Even if the texture is resized in the properties dialog, the size taken in the channelgroup will stay the same. Best is to make sure a texture has the correct dimensions before loading.

TGA, DDS and PNG can hold Alpha information next to the RGB values for transparency of the texture (RGBA). If you would like to read more on texture please see the Texture channel help and the Texture List editor help. The tutorial manual is also a good place to start for more general texture information.

Back to Main Index

Category: Reference Manual


Importing from Max and Maya - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Importing from Max and Maya

From Quest3D

Jump to: navigation, search

Contents

  • 1 A1 Importing from Max and Maya
    • 1.1 3D Studio Max
      • 1.1.1 Preparation tips
      • 1.1.2 Modeling tips
      • 1.1.3 Material tips
      • 1.1.4 Texture tips
    • 1.2 Maya

A1 Importing from Max and Maya

3D Studio Max

Preparation tips

  • Delete all unnecessary objects (help lines etc.)
  • Select all remaining objects
  • Convert all objects to ‘Editable Mesh’
  • Apply ‘ResetXForm’ to all objects
  • Convert all objects to "Editable Mesh" again.
  • In some cases you will see that some objects will be messed up with normals pointing in the wrong direction.
  • Flip polygons for those objects that need it (mostly objects that were mirrored)
  • If you have a skinned object, make sure that the stack only has an ‘Edit Mesh’-modifier and a ‘Physique’/’Skin’-modifier above it.

Modeling tips

  • Weld all vertices that need it with a ‘0,001’-distance.
  • Make sure all objects have smoothing applied (even if they don't need it, all objects must have smoothing group(s) assigned). If you do not apply it manually, but rely on the automatic smoothing that primitives are created with, you can't be sure that it will be transferred correctly to Quest3D.
  • Perform an ‘Attach List’ to reduce many objects sharing the same material to one (for example steps of a staircase). This will make it easier in Quest3D if you decide to change the materials.
  • Whenever an object is mirrored, you'll most likely need to flip its polygons. This is only evident when you've applied a ‘ResetXForm’ and an ‘EditMesh’-modifier (as preparation for .X export).
  • Don't create models where 2 planar surfaces overlap each other with little height distance. This will cause Z-buffer problems in Quest3D (flickering when the camera is high above the overlapping surfaces).
  • Keep in mind that only faces and polygons will be visible in Quest3D. Lines cannot be exported.

Material tips

  • No 2-sided materials are allowed. If any objects should be seen from both angles, make a clone of the object with flipped polygons and attach it to the original.
  • Always use the standard 3DSMax-material.
  • Materials with ‘Wire’ set to ‘on’ are useless in Quest3D. If you want to create thin objects (such as rope or wire), you must model them using conventional geometry.
  • Keep in mind that only objects mapped with the UVWmap-modifier or the UnwrapUVW-modifier are correctly exported to .x. Don't use the mapping features in the material editor (scale, crop etc.) as they're not exported.

Texture tips

  • Keep all the textures that you use in a given 3DSMax scene in the same folder. When you import an .X file in Quest3D, it will scan the folder looking for the scene textures, so make sure to export your .X scene to the folder where your textures are located.
  • Don’t use JPG textures with less than 8x8 pixels. This will make DirectX crash.
  • For non-transparent objects, use JPG textures (or DDS textures if your target platform has graphics cards that support this). Texture sizes must adhere to a power of 2, meaning that 8, 16, 32, 64, 128, 256, 512 pixels are all valid sizes. 1024 & 2048 pixels are also allowed if the graphics card supports it (most modern cards do that)
  • Keep in mind that the difference between a 512x512 texture and a 1024x1024 texture is 1:4, so the last-mentioned texture takes up 4 times as much memory of your graphics card than the smaller one. If you use textures that don't adhere to the power of 2-rule, Quest3D will automatically convert them by rounding up (i.e. a 768x972 texture will be converted to a 1024x1024) texture.
  • For a transparent object, you can use one TGA (32-bit with alpha-channel included) or 2 JPGs (where the second holds the alpha channel information) or 1 PNG file. Keep in mind that TGAs are the better choices because they can be mipmapped (as opposed to using two JPGs).
  • For transparent objects, you can also use a DDS with an alpha channel. If you pre-generate the MIP maps in Photoshop, your Quest3D project will start up faster: normally, all textures that have mipmapping enabled will have their mipmaps generated upon starting up the application. With DDS you can do this in advance.

Maya

Quest3D ships with .X Exporters for Maya up to version 6. There are several ways to install an .X exporter for Maya. You can use the way descripibed below or you can install the Microsoft DirectX 9.0c SDK.

The Microsoft DirectX 9.0c SDK can be downloaded from the following page: http://msdn.microsoft.com/directx/

We recommend using the exporter from Microsoft, if needed, follow these steps for the installation and usage of the Maya 5 exporter. The steps also apply for older versions.

  • In the Start Menu, locate the directory, ‘Act3D/Quest3D/Extras/Exporters/Maya’.
  • Click on the ‘X exporter for Maya 5 (Vertex Color)’.
  • A message will remind you to read the ‘readme.txt’ in the file. Click OK.
  • Extract all files to a temporary directory, such as ‘C:\Temp’. You can delete this directory when the installation is complete.

The following instructions are taken from the Readme.txt file, and revised.

  • Make sure that Maya is not running
  • Copy ‘xExport.mll’ to the ‘\bin\plug-ins’ subdirectory in the Maya program folder on your harddisk.
  • Copy ‘xfileTranslatorOpts.mel’ to ‘\scripts\others’.
  • Copy ‘bicubicBezierPatches.mel’ to ‘<mayapathname>\scripts\others’.
  • Copy ‘msvci70.dll’ and ‘msvcr70.dll’ to ‘<WINDIR>/system32’.
  • Run Maya.
  • Select ‘Window->Settings/Preferences->Plug-in Manager’ from the main menu bar.
  • Turn on the ‘auto load’ checkbox next to ‘xExport.mll’.
  • Turn on the ‘loaded’ checkbox next to ‘xExport.mll’.

To use the exporter, do the following:

  • Create an object or open your scene
  • Choose File -> Export All. Don't click on the name, but on the Options Box.
  • The Exporter Options will be shown. First change the Filetype in the drop-down menu to “Xfile”. Several options will appear:

Example290.jpg

  • File Options deals with the way the file is constructed. Ascii will do fine.
  • Tesselation Options only apply if you use Nurbs or Subdiv patches. It is recommended not to use these settings, but to convert all objects to polygons first. The result will be more accurate and predictable because of the control you have with the regular converting tools.
  • Material Options deal with the textures. You can flip the U/V coordinates, and make the texture path relative or absolute. If you don't have textures, you can turn the “Export Materials” option off.
  • Animation Options let you control the way in which the movement is exported. If you export the keyframes only, Quest3D will re-calculate the inbetweens. If you export every frame, the file will be much larger but more accurate.
  • Skinning options apply if you have a skinned character. If you don't use bones, you can turn the “Export Skinning” option off.
  • Click on ‘Export All’. A file dialog appears. Specify the filename and click on Export. The x file will be created, and you can import it in Quest3D.

Back to Main Index


ImportObject - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ImportObject

From Quest3D

Jump to: navigation, search

Contents

  • 1 ImportObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 The Location of the object
      • 1.3.2 The pivot point
      • 1.3.3 The looks of an object
      • 1.3.4 Property dialog
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

ImportObject

General

3D ImportObject that exists of one or more Surfaces

Children

  • Object Matrix - Matrix

Position, size and rotation of the 3D object

  • OffSetMatrix - Matrix

The Offset Matrix (also called Pivot point) of the surface

  • Surfaces - Surface

One or more Surfaces that define the 3D Object.

  • Animation Set - MotionSet

Motion Set Used to animate surfaces.

Description

This channel joins a set of other channels to form a channel that can be displayed by rendering it with a 3D Render. The object consists out of a matrix, an offset matrix, and several surfaces. Each surface is formed by it's material settings, the mesh data, texture settings and textures. This channel is very similar to 3D Object. The difference is that it can animate each surface seperatly from eachother. This channel is only created when you use Polytrans or .X hierachy import of an object loaded into Quest3D.

The Location of the object

The first child of this channel is a Matrix. It represents the location of the object. It contains size, rotation and position. It can even contain shearing. In most cases you'll use a Motion as a matrix for the object.

The pivot point

The rest location of an object is the location of the object when it has a default location (pos: 0,0,0, rot: 0,0,0, size: 1,1,1). Since an object always rotates around 0,0,0 of the rest position you can use this matrix to rotate around another point. Watch out when you change the rest rotations because this can cause in unexpected results.

The looks of an object

What comes next are the surfaces of an object. Each surface represents a different section of the object. For example you might use different surfaces for the ceiling, walls and the floor of a room.

Property dialog

In the dialog of this channel you can find the current hierachy that is used to determine the position of the surfaces.

CallChannel

This channel can not be called. Please use the 3D Render channel to display the object channel. The 3D Render makes sure that the objects are rendered in the right order. If you do call it you need to have set the lights and camera yourself.

Applications

3D objects are the basis of the 3D engine currently present in Quest3D. They are the link between 3D Render and Surface to make sure the surfaces are rendered correctly.

Tips

  • Instead of rendering this channel with a 3D Render you can also call this channel. You can also turn lights on or off by hand. And you can set a camera by hand by calling it.
  • To create a NULL object connect a Motion to an object. This way you can edit a motion that has no object.

One Level Up - Channel List

Back to Main Index

Category: Channels


IMsg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

IMsg

From Quest3D

Jump to: navigation, search

Function definition

void IMsg(const char * text);

or

void IMsg(const char * text1, const char* text2);

or

void IMsg(const char * text, int intValue);

or

void IMsg(const char * text, float floatValue);

or

void IMsg(int intValue);

or

void IMsg(DWORD dwValue);

or

void IMsg(float floatValue);

or

void IMsg(double doubleValue);

or

void IMsg(GUID guid);

Description

Add a debug message to the error.log file and to the debug message window. This line will be shown in black in the debug window and will be prefixed with the "INFO" string in the error.log file.

Parameters

Name | Description
text, text1, text2 | Constant NULL terminated string to debug
intValue | Integer value to debug
floatValue | Floating point value to debug
dwValue | DWORD variable that holds the value to debug
doubleValue | A double variable that holds the value to debug
guid | A GUID that is converted into a readable format for debug

Remarks

You are able to use any of the following functions. If you need to debug a different variable please type-cast it.

You are able to use this function through the global defined iMsg (note the first character is a lower case character in stead of the upper case) so you will not need to use the full notation.

Example

Here a floating point value is debugged twice using both notations in a overloaded CallChannel function.

void Aco_Example3::CallChannel() {

   float floatValue = 1.345f;
   engine->IMsg("Value: ", floatValue);
   iMsg("Value: ", floatValue);

}

Related Documentation

DB, dMsg, mMsg, eMsg, Debugging

One Level Up - EngineInterface

Back to Main Index


InActiveX - Quest3D

InActiveX

Contents

  • 1 InActiveX
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

InActiveX

General

Detects if the current group is run in the Quest3D ActiveX Control

Children

none

Description

Channelgroups can be run in the Quest3D ActiveX control. The value of this channel will be set to 1 (one) when this is the case, if not, the value will be set to 0 (zero).

CallChannel

Will have no effect

Applications

  • Show your channelgroup(s) in a web page or as a web page
  • Use 3D elements in a Microsoft PowerPoint presentation
  • Easily create 3D programs with Microsoft Visual Basic or any other development tool that supports ActiveX Controls.

Tips

Most of the times, when a channelgroup is loaded through an ActiveX control, the user has loaded it from the Internet. With this channel you are then able to dynamically load a less bandwidth consuming version.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | ActiveX


Inertia - Quest3D

Inertia

Contents

  • 1 Inertia
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Up and down
      • 1.3.2 Up
      • 1.3.3 Down
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Inertia

General

Smooth the value of the child.

Children

  1. Input value - Value
    • The value to smooth
  2. Damping Value - Value
    • The amount to smooth

Description

Smooths the value of the "Input Value" child. If the child receives peak values you can use this channel to smooth the value.

In the dialog you are able to configure the way the channel will smooth:

Inertia properties window

You can configure the "Direction" of the smoothing:

Up and down

Will smooth the value when the new value is higher than the previous and when the new value is lower than the previous.

Up

Will only smooth when the new value is higher than the previous. When the new value is lower, that value will be automatically used.

Down

Will only smooth when the new value is lower than the previous. When the new value is higher, this value will be used without smoothing.

You can also configure the number of smoothing "Levels":

With the "Damping Value" child you are able to configure how fast the damping should occur. Set the damping somewhere between 0 and 1. Because the TickCount is used, results may vary. Using numbers larger than 1 might result in strange effects.

CallChannel

Will have no effect

Remarks

Don't use negative numbers or numbers higher that the TickCount.

Applications

  • You can use this channel when creating a WinAmp plugin (with WinAmp Spectrum) to smooth the music peaks.
  • You can avoid strange flickering lights and objects by adding this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


InitChannelFromType - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

InitChannelFromType

From Quest3D

Jump to: navigation, search

Function definition

A3d_Channel* InitChannelFromType( ChannelType type, A3d_ChannelGroup* targetGroup=NULL, bool createChilderen=false );

or

A3d_Channel* InitChannelFromType( GUID guid, A3d_ChannelGroup* targetGroup=NULL, bool createChilderen=false );

Description

Create a new instance of a channel and return the pointer of that instance.

Parameters

Name | Description
type | ChannelType struct with the guid variable set to the GUID of the channel that should be created.
guid | GUID of the channel that should be created.
targetGroup | Pointer to the channel group that this channel should be added to. This parameter is optional and the function will just return the pointer when this parameter is not used
createChildren | If set to true, the children will also be created when configured in the channel. This parameter is optional and can only be used when a targetGroup is given.

Return value

Returns a pointer to a A3d_Channel class or NULL when the channel could not be created.

Remarks

When you use this function in a channel you will not need to use the targetGroup parameter nor the createChildren parameter.

Do not forget to delete the channel when used. The function returns a pointer to a new instance. You are responsible for destroying the class.

The function will always return a pointer of the A3d_Channel base class. If you want to use the channel correctly you should type-cast this pointer into the type of the channel that was asked from the function.

Important: do not forget to add Channel Dependencies to your dependency list.

Example

In this example you see how a channel is created and deleted in the constructor and destructor of a channel.

// Constructor
void Aco_Example3::Aco_Example3() {
    // Create a channel in a member variable
    floatChannel_ = (Aco_FloatChannel*)
        InitChannelFromType(FLOAT_CHANNEL_GUID);
}
// Descructor
void Aco_Example3::~Aco_Example3() {
    // Destroy our created channel
    delete floatChannel_;
    floatChannel_ = NULL;
}

Related Documentation

ChannelType, GetUniqueChannel, DoDependencyInit


InScreenSaver - Quest3D

InScreenSaver

Contents

  • 1 InScreenSaver
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

InScreenSaver

General

Detect if the group is running in the Quest3D ScreenSaver Viewer

Children

none

Description

The value of this channel will be set to 1 (one) when the current channelgroup is viewed through the Quest3D ScreenSaver Viewer. The value is left at 0 (zero) when it is not. This viewer enables you to run your channelgroup as a screensaver.

CallChannel

Has no effect

Applications

  • If channelgroup is viewed with the Quest3D ScreenSaver Viewer the GoFullScreen channel should not be called because the screensaver is already in full-screen. Use this channel with an If channel to prevent this.
  • You might want to react different when the channelgroup is viewed as a screensaver to user input or automate some animations.

Tips

  • Also take a look at the InScreenSaverPreview that will detect if the channelgroup is running in the small preview window in the Display Properties window

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


InScreenSaverPreview - Quest3D

InScreenSaverPreview

Contents

  • 1 InScreenSaverPreview
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

InScreenSaverPreview

General

Can detect if the channelgroup is running in the screensaver preview window of the display properties.

Children

none

Description

This channel will set its value to 1 (one) when the current channelgroup is running with the Quest3D ScreenSaver Viewer and it is running in the small preview window of the Display Properties of your current windows (see picture below).

Before the preview will be showed in the properties screen you will need to enable the view in the "Settings..." window.

CallChannel

Has no effect

Applications

Show something different than the complete screensaver in the preview window.

Tips

Also take a look at the InScreenSaver channel documentation.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Reference Manual/Getting Started/Installation - Quest3D

Reference Manual/Getting Started/Installation

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Installation
    • 1.1 Requirements
    • 1.2 Installation
    • 1.3 Shadow Mouse
    • 1.4 Transition Effects
    • 1.5 Un-install
    • 1.6 Registration Code
    • 1.7 Registry Key

Installation

This part will explain how to install Quest3D and what other software and hardware is needed to run Quest3D.

Requirements

  • Microsoft Windows 98, ME, 2000 or XP – Quest3D only runs on Micorosft Windows and compatible PC’s. Windows NT and 95 are not support because DirectX 9.0c is not supported on these windows version.
  • Microsoft Internet Explorer – Internet Explorer (version 4.0 or higher) should be installed. If not, the help system will not work correctly. You can installed the latest version of Internet Explorer at the Microsoft website: http://www.microsoft.com/ie/.
  • Microsoft DirectX 9.0c (or later) – Microsoft DirectX 9.0c must be installed (or a later version). Quest3D uses DirectX to display channels and preview your created scenes. There is no OpenGL support in Quest3D. To get the latest version of DirectX please visit http://www.microsoft.com/directx/.
  • Hardware 3D Accelerator – This piece of hardware is also needed for scenes to be shown. Almost every graphics card sold today has hardware 3D acceleration functions. You should also make sure the latest drivers are installed for your 3D card that support DirectX 9.0c. Please take a look at the website of your 3D card manufacturer. Quest3D is tested on a variety of 3D cards of Matrox, nVidia, ATI and 3Dfx.

Installation

For network based PCs: Before starting the installation make sure you are logged in as Administrator. You need Administrator rights to successfully install Quest3D Professional.

Quest3D installation can be started when the Quest3D CD-ROM is inserted into your CD-ROM drive when windows is already started. A menu will appear where you can select to start the installation of Quest3D. The setup program will allow you to select a target drive and directory and what components should be installed. We recommend you use the “Typical” setup type that will install all components.

You can also manually start the installation by starting the executable file located in the “Install” directory of the CD-ROM. This will start the same installation program as described above.

Once Quest3D is installed you will find the installed programs in your “Start” menu under the “Act-3D” folder. Depending on the installation type you selected you will find more or less menu options.

Shadow Mouse

Some versions of Windows (like 2000) have a "shadow mouse" feature. When this is turned on, you see a shadow behind your mouse cursor. With certain 3D cards, this might result in a flickering mouse cursor. You can turn this option off through the control panel. Doubleclick the "Mouse" item and go to the "Pointer" tab.

Transition Effects

Also in some version of Windows there are "Transition Effects". This are effects like a fading or scrolling menus. These effects might also create strange results when using the menus of Quest3D. You can turn them of in the "Display Properties", also through the control panel. In the "Effects" tab you can uncheck the check-box.

Un-install

Quest3D can be un-installed by selecting the “Uninstall Quest3D” menu option in the “Start” menu or through the “Add/Remove Programs” utility in the “Control Panel” of Windows.

When you are unable to de-install Quest3D this way you can also delete the installation directory by hand. Make sure there are no saved projects, templates or channels that are also deleted. Only the ScreenSaver Viewer is installed in the Windows System directory (call QuestSaver.scr) and can be removed by hand.

When Quest3D is de-installed, the viewers will not work anymore. Please install the “Quest3D Viewers” package (also located on the CD-ROM) to make sure all viewers are working. This package may also be distributed to make sure users can view your productions. Make sure you distribute the latest version that can be found at our website: http://www.quest3d.net/.

Registration Code

The registration code that comes with your Quest3D package is needed once Quest3D is started for the first time. Make sure you enter the code exactly as found on the “Certificate of Authenticity”. The “OK” button is disabled until the entire code is entered correctly. After typing in the code, the OK button will be activated and when you click on it the code is verified. If the code is accepted Quest3D will start normally and you will not be asked to enter the code again. If the code is not accepted please triple check you’ve entered the registration code correctly. If it is still not accepted contact us through http://www.quest3d.com/index.php?id=3 or via your reseller.

Please note that this code may only be used for one Quest3D installation at once. For every user that is using Quest3D a new registration code should be purchased. It is illegal to use the same registration code on more than one PC at the same time.

This registration code can also be used to gain access to our community and support website http://www.quest3d.com/support/. With this code you can upgrade your user account and automatically gain access to new channels, templates, textures, objects, manual updates, tutorials and forums. We recommend you become a part of the community to keep up to date on the latest and the greatest of Quest3D.

Registry Key

There are a number of registry keys created when Quest3D is installed. These registry keys are automatically created when installed and also removed when the software is de-installed.

Back to Main Index

Category: Reference Manual


OO InstanceRefContainer - Quest3D

OO InstanceRefContainer

(Redirected from InstanceRefContainer)
Jump to: navigation, search

Contents

  • 1 OO InstanceRefContainer
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Properties
    • 1.6 Remarks

OO InstanceRefContainer

Children

  1. Source Class Container - OO Class Instances List
    • Class instance list to get instances from

Description

This channel is used to hold a list of references from ClassInstances. Using the OO InterfaceCommand channel, this list can be accessed and changed.

CallChannel

Calling this channel will provide the parent with a list of InstanceRefItems.

Interface

Missing Documentation.
need screenshot

InstanceRefContainer01.jpg

Properties

Items in this list can't be changed manually.

Remarks

You can check whether an OO InstanceRefItem is valid by using an OO InterfaceInfoValue set to Is the class instance valid.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Incomplete


OO InstanceRefItem - Quest3D

OO InstanceRefItem

(Redirected from InstanceRefItem)
Jump to: navigation, search

Contents

  • 1 OO InstanceRefItem
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Properties
    • 1.6 Remarks

OO InstanceRefItem

Children

  1. OO InstanceRefContainer or OO Class Instances List - All Types Channel
    • Container from which instances are retrieved, leave empty when setting the instanceRefItem.
  2. index - Value
    • The index of the item to retrieve, leave empty when setting the instanceRefItem.

Description

This channel is used to hold a reference to an OO ClassInstance.

CallChannel

Calling this channel will provide the parent with a reference to a OO ClassInstance. If no child's are attached this channel can be set using the OO InterfaceCommand channel. When an OO InstanceRefContainer or OO Class Instances List and a valid index are linked the InstanceRefItem will be set to a reference from that list at the specified index postion.

Interface

Properties

Use the Set Class button to set the reference to a OO ClassInstance.

Remarks

You can check whether a InstanceRefItem is valid by using an OO InterfaceInfoValue set to Is the class instance valid.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InstanceRefTree - Quest3D

OO InstanceRefTree

(Redirected from InstanceRefTree)
Jump to: navigation, search

Contents

  • 1 OO InstanceRefTree
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel

OO InstanceRefTree

Children

none

Description

This channel is used to store a position tree of OO ClassInstance references. The OO InterfaceCommand Position Tree->Create is used to fill the tree. The tree can then be queried using the OO InterfaceCommand for items in sphere range, closest item and/or furthest item.

The ClassInstance references are stored in a very efficient tree structure. This makes searching for closest items less performance intensive. Depending on your project a tree can be calculated and filled only once, and only needs updating when positions of items change.

CallChannel

Calling this channel as a child of an OO InterfaceCommand channel will either fill the tree or retrieve items based on the OO InterfaceCommand settings.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceChannel - Quest3D

OO InterfaceChannel

(Redirected from InterfaceChannel)
Jump to: navigation, search

Contents

  • 1 OO InterfaceChannel
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Remarks

OO InterfaceChannel

Children

  1. Instance Item - OO ClassInstance
    • Item to get the data from
  2. Operands - All Types Channel
    • Parameters change depending on channeltype

Description

This channel can be used to retrieve data from an Interface Member where the type of the data to retrieve is set to the “channel” type.

CallChannel

This depends on the type of channel. If the type of channel has been set, please see the help of that channel. If you need to use base type of the channel make sure the tickbox Use base type as channel type is checked.

Interface

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceCommand - Quest3D

OO InterfaceCommand

(Redirected from InterfaceCommand)
Jump to: navigation, search

Contents

  • 1 OO Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Container
        • 1.5.1.1 Add class instance copy to container
        • 1.5.1.2 Add new class to container
        • 1.5.1.3 Cleanup
        • 1.5.1.4 Clear container
        • 1.5.1.5 Copy class instance to container at index
        • 1.5.1.6 Create new class in container at index
        • 1.5.1.7 Remove instance
        • 1.5.1.8 Remove instance
      • 1.5.2 Iteration/random access
        • 1.5.2.1 Assign reference item
        • 1.5.2.2 For each class instance list
        • 1.5.2.3 For each ref container
        • 1.5.2.4 Instance reference at position
      • 1.5.3 Misc
        • 1.5.3.1 Convert channel group to object
        • 1.5.3.2 Create instance
        • 1.5.3.3 Enable/disable function speed profiling
        • 1.5.3.4 Morph object
        • 1.5.3.5 Reset to class
        • 1.5.3.6 Set 'This' for function
      • 1.5.4 Position tree
        • 1.5.4.1 Create
        • 1.5.4.2 Get closest item
        • 1.5.4.3 Get furthest item
        • 1.5.4.4 Get items in sphere range
      • 1.5.5 Reference container
        • 1.5.5.1 Add instance to refcontainer
        • 1.5.5.2 Add refcontainer to refcontainer
        • 1.5.5.3 Cleanup
        • 1.5.5.4 Clear reference container
        • 1.5.5.5 Copy class instance to reference container
        • 1.5.5.6 Copy refcontainer to refcontainer
        • 1.5.5.7 Copy refcontainer to refcontainer (Clear)
        • 1.5.5.8 Insert one item in recontainer
        • 1.5.5.9 Move item from refcontainer to refcontainer
        • 1.5.5.10 Remove duplicates
        • 1.5.5.11 Remove instance from refcontainer
        • 1.5.5.12 Remove item from refcontainer
        • 1.5.5.13 Set item in refcontainer at index
        • 1.5.5.14 Swap item
    • 1.6 Related documentation

OO Command

Children

Depends on the selected command.

Description

This channel is used to perform OO related commands. Such commands include operations on collections, trees and object instances.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the 'Command' tree in the OO Command channel interface. A small help description is shown in the lower pane.

Commands

Container

Add class instance copy to container

Copy the contents of a class instance into an empty spot in the container.

Children

  1. OO ClassInstance Class instance to be copied
  2. OO Class Instances List Class instance list to copy the instance to
  3. Value (Output) Index of the new list item
Add new class to container

Instantiates a new class and adds it to the container

Children

  1. OO ClassType Type of the class to be instantiated
  2. OO Class Instances List Class instance list to instantiate the new object in
  3. Value (Output) Index of the new list item
Cleanup

Removes all empty items from the container and resizes to the number of existing instances in the list.

Children

  1. OO Class Instances List Class instance list to cleanup
Clear container

Removes all items from the container

Children

  1. OO Class Instances List Class instance list to cleanup
Copy class instance to container at index

Copy a class instance into a provided spot in the container

Children

  1. OO ClassInstance Class instance to be copied
  2. OO Class Instances List Class instance list to copy the instance to
  3. Value Index to copy to
Create new class in container at index

Instantiates a new class and inserts it in the container at a certain index

Children

  1. OO ClassType Type of the class to be instantiated
  2. OO Class Instances List Class instance list to instantiate the new object in
  3. Value Index to insert the item
Remove instance

Remove the provided class instance from the container. The container will remain the same size and contain an empty spot. For removing empty spots, see Cleanup

Children

  1. OO InstanceRefItem Reference of the instance to remove
  2. OO Class Instances List Class instance list to remove the instance from
Remove instance

Remove an item from the container at the provided index. The list will remain the same size and contain an empty spot. For removing empty spots, see Cleanup

Children

  1. OO Class Instances List Class instance list to remove the instance from
  2. Value Index to remove the item

Iteration/random access

Assign reference item

Set the supplied reference item to the supplied class instance.

Children

  1. OO ClassInstance Class instance that should be refenced
  2. OO InstanceRefItem (Output) Item that will contain the reference to the OO ClassInstance
For each class instance list

Iterates through a class instance list. For each item in the class instance list, the provided reference item will be set (For each loop)

Children

  1. OO Class Instances List Class instance list that should be used in the loop
  2. OO InstanceRefItem (Output) Item that will contain the reference to the current index in the class instance.
  3. All Types Channel Channels to be called each 'step' in the loop.
For each ref container

Iterates through a reference container. For each item in the reference container, the provided reference item will be set (For each loop)

Children

  1. OO InstanceRefContainer Reference container that should be used in the loop
  2. OO InstanceRefItem (Output) Item that will contain the reference to the current index in the class instance.
  3. All Types Channel Channels to be called each 'step' in the loop.
Instance reference at position

Set the supplied reference item to the item of the supplied reference container at a certain index.

Children

  1. OO InstanceRefContainer Instance reference container to get the reference item from.
  2. OO InstanceRefItem (Output) Item that will contain the reference to the item in the reference container.
  3. Value Index of the item to get the reference from.

Misc

Convert channel group to object

Convert the 3D Object in the supplied channelgroup to an OO structured 3D Object. Make sure the 'object template' channelgroup is loaded into memory.

Children

  1. OO ClassInstance Class instance that will contain the data of the 3D Object
  2. Text Name of the channelgroup that contains the 3D Object to be converted
Create instance

Create a new instance in the class instance channel of the provided class type

Children

  1. OO ClassInstance Output Class instance that will contain the new instance of the provided type
  2. OO ClassType Type of the class that should be instantiated
Enable/disable function speed profiling

Enables function speed profiling. The profiler will measure the time needed to execute a function, the percentage of the total CPU time it needs and the number of invokations per frame. Results are visible in the public channel that is used as 'function target'.

Children

  1. Value Enabled = 1, Disabled = 0
Morph object

Transform an object into another class type. All common interfaces will be copied.

Children

  1. OO ClassInstance Input/Output Class instance that will be changed to the new class type
  2. OO ClassType New type the object should be transformed to.
Reset to class

Reset all the data the class contains to the data of the class definition.

Children

  1. All Types Channel Class instance that should be reset.
Set 'This' for function

Set a new class instance as 'This' pointer for a specific function. This command is needed when using recursion

Children

  1. OO ClassInstance Class instance that will be used as 'This' pointer for the function
  2. OO InterfaceFunction InterfaceFunction to set the 'This' pointer for.

Position tree

Create

Create a reference tree from the supplied list. Also provide how to find the position information from the classes.

Missing Documentation.
TO BE DOCUMENTED
Get closest item

From the supplied reference tree, get the items that are closest to the supplied vector. You can exclude a reference item and provide the number of items you want to return.

Children

  1. OO InstanceRefTree The position tree
  2. OO InstanceRefContainer Output Instance ref container to store the closest items
  3. Value Vector Vector that contains the position
  4. OO ClassInstance Excluded classinstance (use InstanceRefItem)
  5. Value Maximum number of items in the returned instance ref container
Get furthest item

From the supplied reference tree, get the items that are furthest from the supplied vector. You can exclude a reference item and provide the number of items you want to return.

Children

  1. OO InstanceRefTree The position tree
  2. OO InstanceRefContainer Output Instance ref container to store the furthest items
  3. Value Vector Vector that contains the position
  4. OO ClassInstance Excluded classinstance (use InstanceRefItem)
  5. Value Maximum number of items in the returned instance ref container
Get items in sphere range

From the supplied reference tree, get the items that are in the supplied range vector. You can exclude a reference item.

Children

  1. OO InstanceRefTree The position tree
  2. OO InstanceRefContainer Output Instance ref container to store the furthest items
  3. Value Vector Vector that contains the position
  4. Value Range distance
  5. OO ClassInstance Excluded classinstance (use OO InstanceRefItem)

Reference container

Add instance to refcontainer

Copy the reference of a class instance into an empty spot in the reference container

Children

  1. OO ClassInstance Instance to add to the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to add the instance to.
Add refcontainer to refcontainer

Copy content of a reference container into a reference container

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
Cleanup

Remove all empty items from the reference container

Clear reference container

Remove all items from the reference container

Copy class instance to reference container

Copy the reference of a class instance into an empty spot in the reference container. Does not copy duplicate items.

Children

  1. OO ClassInstance Instance to copy to the reference container (can be InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to add the instance to.
Copy refcontainer to refcontainer

Copies all items in the source container to the destination reference container. Does not copy duplicate items.

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
Copy refcontainer to refcontainer (Clear)

Clears the destination reference container and copies all items in te source reference container to the destination reference container. Does not copy duplicate items.

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
Insert one item in recontainer

Insert the class instance in the reference container at the supplied index.

Children

  1. OO ClassInstance Instance to copy to the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to add the instance to.
  3. Value Index to insert the item in
Move item from refcontainer to refcontainer

Move a supplied class instance from one refcontainer to one another.

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
  3. OO ClassInstance ClassInstance to move (can be OO InstanceRefItem)
Remove duplicates

Remove all duplicates in the instancerefcontainer

Children

  1. OO InstanceRefContainer Instance reference container to remove duplicates from.
Remove instance from refcontainer

Children

  1. OO ClassInstance Instance to remove from the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to remove the instance from.
Remove item from refcontainer

Children

  1. OO InstanceRefContainer Instance reference container to remove the item from.
  2. Value Index of the item to be removed
Set item in refcontainer at index

Children

  1. OO ClassInstance Item to set in the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to set the item in
  3. Value Index to store the item
Swap item

Children

  1. OO InstanceRefContainer Instance reference container of which items are to be swapped
  2. Value Index of an item
  3. Value Index of item to swap the other item with

Related documentation

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Incomplete


OO InterfaceFunction - Quest3D

OO InterfaceFunction

(Redirected from InterfaceFunction)
Jump to: navigation, search

OO Function

Children

  1. Instance item - OO ClassInstance
    • The class instance that is used to invoke the function
  2. Operands - All Types Channel
    • Parameters needed for the function

Description

This channel is used to invoke OO Functions.

CallChannel

Calling this channel will execute the selected function. The provided OO ClassInstance channel will be use as 'This' pointer for the invoked function.

Interface

The OO Function Interface allows you to select the function to invoke. When a function is called, the run-time will automatically calls the overriddenfunction, if it exists. If you explicitely want to invoke the default implementation of the function, the implementation which the 'Interface' targets, select 'Use default implementation'.

You can also select 'Use default implementation' when you want to call the default implementation in an overridden function. Make sure you don't forget to check 'Use default implementation' (see arning below).

WARNING When you invoke the same OO function inside an OO function implementation, this can cause a 'stack overflow'. Quest3D will then crash without any warning. If you want to implement recursive functions, make sure you change the 'This' pointer by using a OO InstanceRefItem as the first parameter of your recursive call. Recursive functions can only be of type ChannelCaller

Related documentation

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


InterfaceFunctionParameter - Quest3D

InterfaceFunctionParameter

OO InterfaceFunctionParameter

Children

none

Description

This channel is not in the channel list but should be dragged from either the OO Editor or the interface/project tree window.

This channel is used to get and set parameters used with interface functions.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceInfoValue - Quest3D

OO InterfaceInfoValue

(Redirected from InterfaceInfoValue)
Jump to: navigation, search

Contents

  • 1 OO InterfaceInfoValue
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 InfoValue
      • 1.4.1 Get number of items in reference container
      • 1.4.2 Is the class instance the same
      • 1.4.3 Is the class instance of the class type
      • 1.4.4 Does the class instance contain the interface
      • 1.4.5 Is the class instance valid
    • 1.5 Applications

OO InterfaceInfoValue

Children

  1. Depends on the selected command - All Types Channel

Description

This channel can be used to retrieve info about a OO ClassInstance, or an OO InstanceRefContainer.

CallChannel

Calling this channel will execute the selected command, a Value is returned to the parent channel.

InfoValue

Get number of items in reference container

Retrieve the number of items an OO InstanceRefContainer holds, returns the number of items.

Children

  1. OO InstanceRefContainer
Is the class instance the same

Checks if both OO ClassInstances are the same, returns 1 if true

Children

  1. OO ClassInstance
  2. OO ClassInstance
Is the class instance of the class type

Checks if a ClassInstance is of a certain OO ClassType, returns 1 if true.

Children

  1. OO ClassInstance
  2. OO ClassType
Does the class instance contain the interface

Checks if a ClassInstance contains a certain OO InterfaceType

Children

  1. OO ClassInstance
  2. OO InterfaceType
Is the class instance valid

Checks whether a OO ClassInstance is valid, returns 1 if true. When a OO ClassInstance is deleted from a OO Class Instances List or OO InstanceRefContainer this command will return 0.

Children

  1. OO ClassInstance

Applications

Get info about ClassInstances or InstanceRefContainers

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceMatrix - Quest3D

OO InterfaceMatrix

(Redirected from InterfaceMatrix)
Jump to: navigation, search

Contents

  • 1 OO InterfaceMatrix
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

OO InterfaceMatrix

Children

  1. Instance Item - OO ClassInstance
    • Item from which to retrieve the matrix

Description

This channel is able to store and retrieve a matrix from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the matrix.

Retrieve data

Because this channel has a Matrix base class, it can be used normally as a Matrix channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Matrix channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store a matrix.

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


Project Tree - Quest3D

Project Tree

(Redirected from Interfaces)
Jump to: navigation, search

Contents

  • 1 Project Tree
    • 1.1 Description
    • 1.2 Icons
    • 1.3 Common functionality
      • 1.3.1 Adding a channelgroup
      • 1.3.2 Selecting a channelgroup
      • 1.3.3 Removing a channelgroup
      • 1.3.4 Set as start group
    • 1.4 Drag and drop functionality
    • 1.5 Related documentation

Project Tree

Description

The Project Tree window is a substitute for the original Group List, known from versions earlier than Quest3D 4.0. The Project Tree, however has functionality to use OO related definitions, as defined in the OO Editor

To add the Project Tree, right mouseclick in a Quest3D interface tab and select Add Window->Object Orientation->Project Tree

The following picture shows an example of how an OO Quest3D application could look like in the Project Tree

Icons

For all icons used in the Project Tree, see the Icons section.

Common functionality

Using the Project Tree you can do the following Channel Group functions:

  1. Add a new ChannelGroup
  2. Select a ChannelGroup in the current Channel Editor
  3. Remove a ChannelGroup
  4. Set a ChannelGroup as start group.

Adding a channelgroup

A channelgroup can be added by selecting 'Add group' in the context menu

Selecting a channelgroup

A channelgroup can be selected by double-clicking a channelgroup in the tree or by choosing 'Select' in the Interface Tree contextmenu. The current channelgroup that is selected for editing in the Channel Editor can be recognized by the light blue color.

When a channelgroup is selected, you can also view private interfaces and private interface members in the tree. If you have private interfaces or interface members and the channelgroup is not selected, they will not be shown.

Removing a channelgroup

Removing a channelgroup can be done by pressing the 'Del' key while having a channelgroup in the Interface Tree selected, or choosing 'Remove' from the Project Tree contextmenu

Set as start group

The current selected channelgroup in the Project Tree can be set as startgroup by choosing 'Set as start group' in the Project Tree contextmenu.

Drag and drop functionality

You can drag and drop items from the Project Tree into another interface in Quest3D. Currently you can only drop items in the Channel Editor.

The following items can be dropped:

  • Channelgroups: When dropped on the Channel Editor, the channelgroup is loaded in to the editor. The channelgroup will also become the slected channelgroup in the Project Tree.
  • Interface members: When dropped on the Channel Editor, Quest3D will create the appropriate member invokation channel. This can be InterfaceChannel, InterfaceFunction, InterfaceMatrix, InterfaceText, InterfaceValue or InterfaceVector. Note that if you drag and drop a member of type InterfaceChannel, it will by default create an InterfaceChannel that has the same base type as the base type of the member. If you do not want to use the basetype of the member, hold down 'Shift' when dropping.

Related documentation

OO Editor, Object Oriented Portal

Categories: Reference Manual | Editor | OO


OO InterfaceText - Quest3D

OO InterfaceText

(Redirected from InterfaceText)
Jump to: navigation, search

Contents

  • 1 InterfaceText
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

InterfaceText

Children

  1. Instance Item - OO ClassInstance
    • Instance to get the text from

Description

This channel is able to store and retrieve text from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the text.

Retrieve data

Because this channel has a Text base class, it can be used normally as a Text channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Text channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store some text.

Remarks

Interface member variables can also be dragged in onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


OO InterfaceType - Quest3D

OO InterfaceType

(Redirected from InterfaceType)
Jump to: navigation, search

Contents

  • 1 InterfaceType
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Remarks

InterfaceType

Children

none

Description

This channel can be set to an InterfaceType. The channel can be used with the OO InterfaceInfoValue to check if a Class has a certain interface.

CallChannel

Calling this channel will pass the InterfaceType to it's parent.

Interface

Remarks

Use the dialog to set the correct InterfaceType.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceValue - Quest3D

OO InterfaceValue

(Redirected from InterfaceValue)
Jump to: navigation, search

Contents

  • 1 InterfaceValue
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

InterfaceValue

Children

  1. Instance Item - OO ClassInstance
    • Instance from which to retrieve the value

Description

This channel is able to store and retrieve a values from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the value.

Retrieve data

Because this channel has a Value base class, it can be used normally as a Value channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Value channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store a value.

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


OO InterfaceVector - Quest3D

OO InterfaceVector

(Redirected from InterfaceVector)
Jump to: navigation, search

Contents

  • 1 InterfaceVector
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

InterfaceVector

Children

  1. Instance Item - OO ClassInstance
    • Instance to retrieve a vector from

Description

This channel is able to store and retrieve a vector from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the vector.

Retrieve data

Because this channel has a Value Vector base class, it can be used normally as a Value Vector channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Vector channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store a vector.

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


Tutorial/OO/Patterns/Introduction - Quest3D

Tutorial/OO/Patterns/Introduction

Contents

  • 1 Patterns
    • 1.1 Introduction
    • 1.2 History, resources and links
    • 1.3 Definition (According to GoF)
    • 1.4 Pattern types
    • 1.5 Examples
      • 1.5.1 Creational Patterns
      • 1.5.2 Structural Patterns
      • 1.5.3 Behavioral Patterns

Patterns

Introduction

As you may figure out when you're going to use an 'Object-Oriented'-approach in your Quest3D-projects, OO becomes really useful in projects which are big and where segments have to be repeated or hierarchy is required.

In the software industry you'll not be the first one to be challenged by some on the problems and limitations of the use of the generic 'data classes'. Early in the developmentcycle you'll want 'special classes' which not so much contain data, but have special properties and operations on classes which are the pure 'data classes'. These kind of concepts are defined as "Design Patterns", or "Patterns" for short.

History, resources and links

Patterns originated as an architectural concept defined by Christopher Alexander in 1979, but really got flight in the ICT industry after the book "Elements of Reusable Object-Oriented Software" by "Group of Four" in 1995. They we're the first to define a 20-odd patterns to be reused in most software design and therefor is tought of as the original first source for Design Patterns.

Some solid reference for information on Design Patterns:

  • "Design Patterns: Elements of Reusable Object-Oriented Software", GoF, 1995 [1];
  • "Design Patterns" on wikipedia [2]

Definition (According to GoF)

In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Algorithms are not thought of as design patterns, since they solve computational problems rather than design problems.

Pattern types

If you look at the available Design Patterns, you can classify patterns by two criteria:

  • Purpose: reflects what a pattern does;
  • Scope: specifies wether the pattern applies primarily to classes or objects.

Since Quest3D is always at 'run-time' and thus a classification based on run-time vs compile-time is irrelevant, the only interesting classification for us is the classification based on purpose.

The classification based on purpose knows three variants:

  • Creational: concerns the process of object creation;
  • Structural: deals with the composition of classes or objects;
  • Behavioral: characterize the ways in which classes or objects interact and distribute responsibility.

Examples

Some examples of the available design patterns (some will be worked out in depth in the following tutorials):

Creational Patterns

Factory

Deals with the problem of creating objects without specifying the exact class of the object that will be created.

Builder

Decouples the complexity of 'construction of and object' with it's representation, so that the same construction process can create different representations.

Singleton

Ensures a class only has one instance, and provide a global point of access to it.

Structural Patterns

Manager

Defines logic for a selection of data classes. This pattern not only manages the data classes using a container construct, but also manages all the operations ON these data classes.

Composite

Allows a group of objects too be treated the same way as a single instance of the object.

If you find that you are using multiple objects in the same way, and often have nearly identical code to handle each of them, then Composite is a good choice.

Facade

Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

Proxy

A proxy, in its most general form, is a class functioning as an interface to another thing. The other thing could be anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate.

A well-known example of the proxy pattern is a smartpointer-object.

Model-View-Control

In complex computer applications that present a large amount of data to the user, a developer often wishes to separate data (model) and user interface (view) concerns, so that changes to the user interface will not affect data handling, and that the data can be reorganized without changing the user interface. The model-view-controller solves this problem by decoupling data access and business logic from data presentation and user interaction, by introducing an intermediate component: the controller.

Behavioral Patterns

Command

A command pattern is used where objects represents actions. A Command-object encapsulates and action and it's parameters. The command-pattern is often used when transactional-behaviour is required.

Interpreter

An interpreter is a pattern which has to do with language recognition or file input. When using XML for your configuration files, for instance, a reader-object "XML parser" is seen as the interpreter of your input files.

Observer

Also know as the 'publish/subscribe'-mechanism. The pattern is mainly used to implement a distributed event handling system.

Hierarchical Visitor

in graphicsland also know as a Scenegraph

Defines a hierarchical construct with several traversal techniques to make iteration through this hierarchical construct possible. This pattern is often used in the rendering-loop of a 3D graphics engine, where you traverse the hierarchical structure backwards to update and cull the scene, after which you traverse the structure forward to render the active objects.

Categories: Tutorials | OO


Tutorials/Object Oriented Programming/Introduction - Quest3D

Tutorials/Object Oriented Programming/Introduction

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Introduction to Object Oriented Development in Quest3D
    • 1.1 Introduction
    • 1.2 Important definitions
      • 1.2.1 Objects
      • 1.2.2 Interfaces
      • 1.2.3 Classes
    • 1.3 Reasons for OO development in Quest3D
      • 1.3.1 Rendering different kinds of objects
    • 1.4 See Also

Introduction to Object Oriented Development in Quest3D

Introduction

Quest3D 4.0 introduces a new way of development: the Object Oriented system. This way of development is quite comparable to Object Oriented Programming as supported in modern programming languages, such as C#, Java en C++.

The OO System in Quest3D is based on the same concept, however it is important to explain OO terms used in the Quest3D context. This article is an introduction, needed to understand the basics of OO programming in Quest3D and the reason why OO development in Quest3D is necessary.

Important definitions

Objects

Objects are 'entities' within the Quest3D program, that can contain data and functions. Data can be for instance 3D object data, matrices, vectors, text, etc. Functions can operate on data that is contained by the object, or invoke functions of other objects. When invoking a function, additional input can be provided using parameters.

Interfaces

Interfaces define which functions and data the object exposes to the outside world. The outside world will be able to invoke functions using the interface, without knowing what actual kind of object it is dealing with. It only knows there is an entity, with a certain interface.

Interfaces can also contain default implementations of functions. All objects that use a certain interface, automatically contain the default implementation.

Example of an object

Classes

In Quest3D a class is a definition of an object type. Quest3D Objects are instances of classes. In a class, we can define which Interfaces are supported by the object type and, if needed, specialize functions for the class type. Default implementations of functions will then be 'overridden', so each class can have its own specialized behavior.

Reasons for OO development in Quest3D

The reason why development in Quest3D should be done in an Object Oriented way is simple. In the classic way of Quest3D development, data and functionality doesn't have a context. It is very hard to place the right logic at the right place and structure data in an efficient way. The example below shows how a simple Quest3D application can already have a lot of redundancy and unnecessary channel logic that can be avoided with OO Development.

Rendering different kinds of objects

One thing done quite frequently in Quest3D is rendering 3D objects. 3D Objects contain data, such as 3DObjectData, position information, material, etc. If you want to render multiple objects, you can use array to store that data in a structured way. However, different kinds of 3D objects have different kinds of 3DObjectData, and maybe also different behavior with respect to positioning or color. You can choose to make multiple arrays, or make one big array with all kinds of 3D objects. In any case, you will end-up in either having a huge table with partly unnecessary data or having redundant channel code render the objects.

The picture 'Redundant' logic, shows what happens if you want to render two different types of 3DObjects, using array. Two arrays, having only one different column: the column that contains the 3DObjectData, and two channel structures that have one difference: the part that gets the specific 3DObjectData from the array.

With OO it is possible, to put all kinds of 3D Objects in one collection and perform the rendering. The rendering is done by invoking 'functions' on all the objects.

The following image shows the renderloop of the example in the first tutorial about rendering objects. It is a very small loop, taking care of rendering primitive objects as well as objects with custom geometry:

Loop that updates and renders objects
Loop that updates and renders objects

In the sample, the loop invokes two different functions: the one for primitive types and the one for custom geometry types. These functions share generic logic to get position data. Only the specific logic needed to render the specific object type is unique. During the loop, two different trees of channel logic are invoked:

One for the 'custom geometry' object type:

Custom geometry

And one for the 'primitive' object type:

Primitive type

The result of this loop is this:

Various3D Objects being rendered in one loop
Various3D Objects being rendered in one loop

See Also

One Level Up - Articles

Back to Main Index

Categories: Tutorials | OO | New in version 4.0


Reference Manual/Getting Started/Introduction and overview - Quest3D

Reference Manual/Getting Started/Introduction and overview

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Introduction and overview
    • 1.1 What is Quest3D?
    • 1.2 Structure of Quest3D
    • 1.3 Flexibility
    • 1.4 Quick overview of Quest3D concepts

Introduction and overview

Welcome to Quest3D! Quest3D is a tool for creating stunning real-time 3D multimedia productions. Quest3D is packed with a range of advanced features you normally only find in custom-made software. Quest3D puts the power of new technologies in your hands. Quest3D is easy to use and extremely flexible. With Quest3D your imagination is the only limitation you have.

What is Quest3D?

Quest3D is not a tool you can use to paint pictures or 3D models. In stead you must create pictures, 3D meshes and sounds in a separate program and import them in Quest3D. Quest3D can turn a collection of static images, sound and models into overwhelming interactive experiences.

Structure of Quest3D

By default the Quest3D editor is divided in three sections: Channels, Object and Animation. Although you can configure Quest3D any way you like we created these three sections because they represent the three separate tasks that are involved with creating real-time 3D applications.

The channels section allows you to draw the logic and dependencies of your virtual world. You can attach the position of a 3d object to the position of the mouse for example.

In the object section you define the looks of your 3d objects. You can give them one or more textures, glossiness, transparency or a different color.

In the animation section you can preview your end result and animate all objects. You set up the camera(s), lights, and bones. Another important task in the animation section is animating motions and values. You can make a text fly into the screen or you can fade the background in all the colors of the rainbow.

Flexibility

Quest3D is extremely flexible compared to most multimedia tools. Flexibility also means that you have more responsibility. You have to make sure that you remove any unused components from the project for example. The payoff is that there are very few limitations to what you can create with Quest3D. With Quest3D you can create animations, presentations, visualizations, walkthroughs, games, websites, screensavers and even Winamp plug-ins.

Quick overview of Quest3D concepts

In Quest3D you create everything by drawing links between components. In Quest3D each component is called a channel. A channel can be a sound, texture, a command or any other piece of information. Each channel has a type and a base type. The type of a channel is unique for each channel. The base type indicates the functionality of the channel. All channels that have the same base type hold the same type of data.

Some channels need other channels. A motion needs a position for example and is called its child. The type of the child should match the type of the link position of the parent before a connection can be established. If a link position accepts a child with a certain type it will accept all channels with that same type.

All channels are stored in a channel group. Each channel group has links to other channel groups. This means that there can be links between channels in one file and channels in another file(s).

Each group has a starting point. At any point Quest3D has a start group. In the viewers the start group is the group you select for viewing and in the editor it can be any of the groups that are loaded into memory. Quest3D tells the start channel in the start group to execute itself and this triggers a response by all the children of the start channel, the children of the children of the start group and so on.

Each channel group can be compressed or converted automatically. When you load a channel group it is decompressed automatically. Quest3D has a big set of components that have limited size. Missing or new components can be installed automatically.

Back to Main Index

Category: Reference Manual


Articles/Introduction to HDR Rendering - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Articles/Introduction to HDR Rendering

From Quest3D

< Articles
Jump to: navigation, search

Contents

  • 1 Introduction
  • 2 Tone mapping
  • 3 Post processing
  • 4 Requirements
  • 5 Implementing HDR in Quest3D
  • 6 Examples
  • 7 See Also

Introduction

The HDR rendering feature is an exciting feature that allows users to render the scene using real numbers in stead of simple 8 bit values. Regular rendering uses values ranging between 0 and 255 to express colors. The HDR functionality allows for rendering scenes using real values.

To illustrate the difference, let’s take a material that is fully white (1,1,1) and a two lights that are also fully white. When not using HDR, the resulting colors can never be higher than simple white. With HDR however, the two lights make the surface twice as bright as the non HDR result.

In short, HDR rendering avoids any clipping of the values and everything is calculated more accurately. The result is an image that resembles reality more closely because it can contain both extremely dark and extremely bright areas.

Tone mapping

To display a HDR rendered image onto your screen it needs to be converted to 8 bit accuracy because the monitor can only display simple 8 bits per color channel (making 24 bits total for the R,G and B channels).

Tone mapping can be compared to taking a picture with a camera. The tone mapping algorithm tries to adapt the visual range of the resulting image so the HDR image is visible.

This process is comparable to the exposure setting when taking a picture. A long exposure is used for dark images and a short exposure is needed for high intensity images.

The tone mapping algorithm measures the luminosity of the HDR image and applies the correct translation function so the resulting HDR image fits a certain target luminosity. When the image has the target luminosity it is viewable when converted to 8 bits.

Post processing

Although the tone mapping makes sure the HDR image is visible on your monitor some values are still very bright and do not fit in the 8 bit range. These values will be clipped between 0 and 255 so they loose their intensity. Quest3D can add simulated flare and glare effects to give the viewer visual cues that these areas are very bright.

This post processing not only displays the image intensity better, it also results in an appealing look that looks much more real than unprocessed images. Quest3D includes effects for bloom, flare and lens reflections.

On old hardware flare effects had to be emulated using a transparent square with a flare texture on it. The HDR rendering approach works on the final image so anything that is bright results in a flare.

Requirements

WARNING: MAKE SURE YOU USE THE LATEST DRIVER FOR YOUR 3D CARD SOME DRIVERS MAKE THE SHADERS CRASH AND YOU WILL ONLY SEE A BLACK SCREEN.

Since HDR rendering is a relatively new technology for real-time 3D cards you need a card that supports it. Below is a table of some cards:

 | HDR Rendering | Interpolates HDR textures | Supports cube maps
Geforce 6 and 7 series | Yes | Yes | Yes
Geforce 5 series | Yes | No | No
Ati X600+ | Yes | No | Yes
Geforce 4 and 3 series | No | No | No
Ati 9xxx series | No | No | No

There are basically three types of cards:

  • Cannot do HDR rendering at all
  • Can render HDR but does not interpolate HDR textures
  • Can render HDR and interpolate HDR textures

The first type simply does not allow rendering of HDR scenes. This is the ATI 9700, 9800, Geforce 4 and 3 for example.

The second category has a limited implementation of HDR. They can render and load HDR textures but they cannot interpolate them. This means that a bloom post processor looks very blocky as it stretches a small HDR texture to full screen size. On these cards you can see the individual pixels of the post processing result. As a solution, there are several effects available that convert their post processing result to 8 bit. Since these cards can interpolate 8 bit textures perfectly the result is almost the same as displaying the HDR results directly.

The last category supports both HDR textures and interpolating them. This is ideal because it can stretch the HDR post processing results directly to full screen.

Implementing HDR in Quest3D

Rendering your scene in HDR is quite simple. In stead of rendering to the screen you’ll have to render everything to a texture that has HDR enabled. In most cases you want this texture to have the same size as your back buffer so you might want to check that option too.

Without any modifications, most scenes will result in the exact same image when rendered to a HDR texture in stead of a regular texture. For a difference, the scene needs to contain actual high intensities. The only way to do this is by using HDR textures or by using a shader that outputs that are beyond the 0-1 range. For example you might use a material to make the sky 10 times as bright as normal.

Now that you have rendered your scene you still need to show it on the screen. For this we introduce a new channel: High Dynamic Range Process. This channel takes a HDR image and shows it on screen.

Examples

Look in <YourQuest3DDirectory>/Examples/New in 3.5/HDR with LDR output.cgr and <YourQuest3DDirectory>/Examples/New in 3.5/HDR with HDR output.cgr

See Also

High Dynamic Range Process

One Level Up - Articles

Back to Main Index

Category: Tutorials


Articles/Introduction to HDR Rendering - Quest3D

Articles/Introduction to HDR Rendering

< Articles(Redirected from Introduction to HDR Rendering)
Jump to: navigation, search

Contents

  • 1 Introduction
  • 2 Tone mapping
  • 3 Post processing
  • 4 Requirements
  • 5 Implementing HDR in Quest3D
  • 6 Examples
  • 7 See Also

Introduction

The HDR rendering feature is an exciting feature that allows users to render the scene using real numbers in stead of simple 8 bit values. Regular rendering uses values ranging between 0 and 255 to express colors. The HDR functionality allows for rendering scenes using real values.

To illustrate the difference, let’s take a material that is fully white (1,1,1) and a two lights that are also fully white. When not using HDR, the resulting colors can never be higher than simple white. With HDR however, the two lights make the surface twice as bright as the non HDR result.

In short, HDR rendering avoids any clipping of the values and everything is calculated more accurately. The result is an image that resembles reality more closely because it can contain both extremely dark and extremely bright areas.

Tone mapping

To display a HDR rendered image onto your screen it needs to be converted to 8 bit accuracy because the monitor can only display simple 8 bits per color channel (making 24 bits total for the R,G and B channels).

Tone mapping can be compared to taking a picture with a camera. The tone mapping algorithm tries to adapt the visual range of the resulting image so the HDR image is visible.

This process is comparable to the exposure setting when taking a picture. A long exposure is used for dark images and a short exposure is needed for high intensity images.

The tone mapping algorithm measures the luminosity of the HDR image and applies the correct translation function so the resulting HDR image fits a certain target luminosity. When the image has the target luminosity it is viewable when converted to 8 bits.

Post processing

Although the tone mapping makes sure the HDR image is visible on your monitor some values are still very bright and do not fit in the 8 bit range. These values will be clipped between 0 and 255 so they loose their intensity. Quest3D can add simulated flare and glare effects to give the viewer visual cues that these areas are very bright.

This post processing not only displays the image intensity better, it also results in an appealing look that looks much more real than unprocessed images. Quest3D includes effects for bloom, flare and lens reflections.

On old hardware flare effects had to be emulated using a transparent square with a flare texture on it. The HDR rendering approach works on the final image so anything that is bright results in a flare.

Requirements

WARNING: MAKE SURE YOU USE THE LATEST DRIVER FOR YOUR 3D CARD SOME DRIVERS MAKE THE SHADERS CRASH AND YOU WILL ONLY SEE A BLACK SCREEN.

Since HDR rendering is a relatively new technology for real-time 3D cards you need a card that supports it. Below is a table of some cards:

 | HDR Rendering | Interpolates HDR textures | Supports cube maps
Geforce 6 and 7 series | Yes | Yes | Yes
Geforce 5 series | Yes | No | No
Ati X600+ | Yes | No | Yes
Geforce 4 and 3 series | No | No | No
Ati 9xxx series | No | No | No

There are basically three types of cards:

  • Cannot do HDR rendering at all
  • Can render HDR but does not interpolate HDR textures
  • Can render HDR and interpolate HDR textures

The first type simply does not allow rendering of HDR scenes. This is the ATI 9700, 9800, Geforce 4 and 3 for example.

The second category has a limited implementation of HDR. They can render and load HDR textures but they cannot interpolate them. This means that a bloom post processor looks very blocky as it stretches a small HDR texture to full screen size. On these cards you can see the individual pixels of the post processing result. As a solution, there are several effects available that convert their post processing result to 8 bit. Since these cards can interpolate 8 bit textures perfectly the result is almost the same as displaying the HDR results directly.

The last category supports both HDR textures and interpolating them. This is ideal because it can stretch the HDR post processing results directly to full screen.

Implementing HDR in Quest3D

Rendering your scene in HDR is quite simple. In stead of rendering to the screen you’ll have to render everything to a texture that has HDR enabled. In most cases you want this texture to have the same size as your back buffer so you might want to check that option too.

Without any modifications, most scenes will result in the exact same image when rendered to a HDR texture in stead of a regular texture. For a difference, the scene needs to contain actual high intensities. The only way to do this is by using HDR textures or by using a shader that outputs that are beyond the 0-1 range. For example you might use a material to make the sky 10 times as bright as normal.

Now that you have rendered your scene you still need to show it on the screen. For this we introduce a new channel: High Dynamic Range Process. This channel takes a HDR image and shows it on screen.

Examples

Look in <YourQuest3DDirectory>/Examples/New in 3.5/HDR with LDR output.cgr and <YourQuest3DDirectory>/Examples/New in 3.5/HDR with HDR output.cgr

See Also

High Dynamic Range Process

One Level Up - Articles

Back to Main Index

Category: Tutorials


Reference Manual/Getting Started/Basics/Introduction to real-time 3D - Quest3D

Reference Manual/Getting Started/Basics/Introduction to real-time 3D

From Quest3D

< Reference Manual
Jump to: navigation, search

Introduction to real-time 3D

The most common 3D tool in the past years has been the 3D animation package. An animation package is used to either render a single picture or to render a sequence of pictures. Quest3D is a different type of animation package. This is because it allows the user to interact with the project. The pictures are rendered as it happens.

In Quest3D each project goes trough a continuous cycle. The duration of each cycle depends on what happens in between. For complex projects the duration of the cycle is longer than for simple projects. If you are used to animation packages it would be as if you are pressing the render button as soon as the image is finished. Real-time techniques are so fast that rendering an entire image can take only 1/100th of a second.

Here is an example how this works in practice: Let’s say you have linked the red component of the background color to the left mouse button. If the user presses the mouse button nothing changes because the user is still watching an old image. 1/100th of a second later the image is displayed where the left mouse button was pressed and the background is red. The same thing counts when the user releases the mouse button. You could say that everything you see on the screen happened 1/fps (frames per second) seconds in the past.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


InWinAmp - Quest3D

InWinAmp

Contents

  • 1 InWinAmp
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

InWinAmp

General

Detects if the channelgroup is viewed through the Quest3D WinAmp Visualization plug in.

Children

none

Description

If the current channel group is run with the Quest3D WinAmp Plugin then this channel will be set to 1 (one), else the channel will remain 0 (zero).

This channel is part of a set of channel that allow you to create WinAmp Visualization Plugins.

CallChannel

Will have no effect

Remarks

This channel is different from the WinAmp Running channel. This channel will detect if you are running through the Quest3D WinAmp Visualization Plugin, and the WinAmp Running channel will detect if WinAmp is running at all.

Applications

Detect if you are running in WinAmp to create different functionality when WinAmp is active.

Tips

Also take a look at the WinAmp Info Text, WinAmp Running and WinAmp Spectrum channels.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


IsChannelLoaded - Quest3D

IsChannelLoaded

Contents

  • 1 IsChannelLoaded
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

IsChannelLoaded

General

Detect if a channel is loaded

Children

  1. Channel to check - All Types Channel
    • Link the (Public Caller) channel here that should be checked

Description

You can use this channel to detect if a channel (public or not) is already loaded. The channel will set its value to 1 if the linked channel is loaded into memory and will set to 0 if not.

CallChannel

Will have no effect

Applications

When a public channel is set to "Autoload" it will load as soon as it is called, you can use this channel to detect if the channel is finished loading so you can reset any timer you are using to avoid strange jumps in your animation.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Keep Running - Quest3D

Keep Running

Contents

  • 1 Keep Running
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Applications

Keep Running

General

Keep the application running even when it is not active

Children

  1. Value - Value
    • When linked this value is used to determine the keep running status.

Description

When the Quest3D application is not active, the Quest3D engine will be paused by default. When it is needed to keep the engine running, this channel can be used to do so. When the child value attached is greather than zero the engine will keep running. Otherwise it will remain idle until the application is activated again.

Applications

This channel can be invoked by ChannelCaller

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


Keyboard shortcuts - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Keyboard shortcuts

From Quest3D

Jump to: navigation, search

A3 Keyboard shortcuts

F1 | Help
F2 | Channels Section
F3 | Animation Section
F4 | Object Section
F5 | Arrays Section
F6 | Nature / Pathfinding Section
Control C | Copy channels
Control X | Cut channels
Control V | Paste channels
~ | Create channel shortcut
Spacebar | Create / explode folder
Backspace | Level up
Pause Break | Toggle Run / Edit Mode

Back to Main Index


Light - Quest3D

Light

Contents

  • 1 Light
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Light

General

Will create a light in the darkness!

Children

  1. Light Pos - Matrix
    • Position of the light
  2. Diffuse - Value Vector
    • Red, Green and Blue diffusion colors
  3. Attenuation - Value Vector
    • 'Attenuation lets you control how point and spotlights fade over distance. First value is constant, second is linear, and the third is exponential.
  4. Range - Value
    • Distance beyond which the light has no effect. This member does not affect directional lights.
  5. Falloff - Value
    • Decrease in illumination between a spotlight's inner cone (the angle specified by Theta) and the outer edge of the outer cone (the angle specified by Phi). The effect of falloff on the lighting is subtle. Furthermore, a small performance penalty is incurred by shaping the falloff curve. For these reasons, often this value is set to 1.0.
  6. Theta - Value
    • Angle, in radians, of a spotlight's inner cone—that is, the fully illuminated spotlight cone. This value must be in the range from 0 through the value specified by Phi.
  7. Phi - Value
    • Angle, in radians, defining the outer edge of the spotlight's outer cone. Points outside this cone are not lit by the spotlight. This value must be between 0 and pi.
  8. Light type - Value
    • Light type uses 0 = directional 1 = spot 2 = point light.
  9. Specular - Value Vector
    • Speculare color used when a 3d object uses a specular color.
  10. Ambient - Value Vector
    • The ambient vector adds brightness to all objects rendered with the light.
  11. Light State Infomation - Value
    • If you call this channel this value will be filled with either 0 or 1 depending on the on/off status of the light.

Description

Link this to a 3D Render so that the objects that are linked to the render will use this light.

This channel will allow you to place a light somewhere in your 3D scene. There are a number of different sorts of lights:

  • Point
  • Directional
  • Spot

CallChannel

Calling this channel will turn the light on or off. You can link a value to the "Light State Infomation" child link position. If the light is off this value channel will be set to 0.0. If the light is on the value is set to 1.0. You can use this functionality to turn a light on and off by hand. This way you do not have to link the light to each 3D Render channel. You can use the "Light State Infomation" child to determine if you need to switch a light off again. If you keep calling this channel every tree count, the light starts flickering.

Remarks

  • 50 lights is current maximum.
  • All objects in the scene that are not emmisive will remain dark without this channel

Applications

Needed to show a 3D object when using non-emissive surfaces.

Tips

You can also use negative lights. These will subtract light from the scene (make it darker).

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Reference Manual/Editor/Animation Section/Light List - Quest3D

Reference Manual/Editor/Animation Section/Light List

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Light List
    • 1.1 General
    • 1.2 Light Type
    • 1.3 Fallof Parameters
    • 1.4 Cone Angles
    • 1.5 Controls

Light List

General

Click the light tab to edit lights

In this window you are able to select a light and change some of the light properties The properties of a light are shown above the list. When you select a light it will be highlighted in the 3D view so you can separate it from the other lights.

Add a new light To add a new light to the ‘current’ render you can press the "Add New Light" button (see contol 8 below). Don’t use too many lights because some 3D accelerators have a maximum of 8 lights and each light can decrease the frame rate dramatically.

You can change what 3D Render channel the light will be connected to in the window. Multiple lights can be linked to a 3D Render channel.

Light Type

Point lights and spotlights are more realistic than directional lights. A directional light does not have a position, only a direction. You can use a directional light if you want to save CPU cycles because they are faster than the other light types. To change the light type press the "Light Type" buttons (see control 1 below). There are three different types of light:

  • Directional - This is a light that has no position, only an orientation. It's also the cheapest light in terms of processing power. It does not have any parameters except for the color of the light.
  • Point - You can compare this light with a light bulb. It emits light in all directions. You can modify the intensity of the light over distance by modifying the falloff parameters
  • Spot - This light is the same as a point light but it has two cone angles that limit its range. You can compare this light with a torch light. This type of lights uses the most processing power.

Spotlights are very rarely used because the real-time rendering method does not produce the results you would expect from a spotlight. If you want to use a spotlight set the inner cone angle to 0.00 or a very small value and the outer cone angle to a larger value. This way the inaccuracy of the lighting algorithm is less noticeable. To change cone angles use the "Light Cone Angles" settings (see controls 6 and 7 below).

By default lights do not have a decreasing intensity at a further distance. The directional light does not have this ‘falloff ’ at all since this type of light has no position. Try experimenting with some values until you get the desired result. Note that you can also fill in negative values. You can use the "Light Fallof Parameters" (see controls 3 to 7 below) to change the falloff of the light.

To set the color of a light you can press the "Light Color" button (see control 2 below).

Fallof Parameters

These properties determine how the light fall off will be shown.

  • Falloff Constant - This value divides the intensity independent of the distance. For example a value of 2 will halve the intensity and a value of 0.5 will double the intensity.(assuming the other two falloff parameters are zero).
  • Falloff Linear - This value will modify the intensity proportional to the distance. For example a value of 0.5 at a distance of 1.0 will result in the same intensity as a value of 1.0 at a distance of 0.5(assuming the other two falloff parameters are zero).
  • Falloff Square - The intensity is divided by this value is multiplied with the square of the distance from the light.

To get a light falloff as with real lights set the square falloff to 1.0 and all other parameters to zero. In practice it is often better to tweak the falloff parameters until you get the desired effect.

Cone Angles

Spotlights emit a cone of light that has two parts: a bright inner cone and an outer cone. Light is brightest in the inner cone and isn't presented outside the outer cone, with light intensity attenuating between the two areas. The two values represent the angles between the center of the spot and the cone.

Because the two values represent the angles of the two cones you should make sure that the inner cone angle is smaller than the outer cone angle. The angles should not be larger than 180 degrees.

Controls

  • 1 - Light Type - You can change the type of the light using these 3 buttons. There are 3 types of lights: Directional, Point or Spot.
  • 2 - Light Color - This shows the color of the selected light. You can change the color of the light by clicking this button.
  • 3 - Falloff Constant - This value divides the intensity independent of the distance. For example a value of 2 will halve the intensity and a value of 0.5 will double the intensity.(assuming the other two falloff parameters are zero).
  • 4 - Falloff Linear - This value will modify the intensity proportional to the distance. For example a value of 0.5 at a distance of 1.0 will result in the same intensity as a value of 1.0 at a distance of 0.5(assuming the other two falloff parameters are zero).
  • 5 - Falloff Square - The intensity is divided by this value is multiplied with the square of the distance from the light.
  • 6 - Outer Cone Angle - Spotlights emit a cone of light that has two parts: a bright inner cone and an outer cone. Light is brightest in the inner cone and isn't presented outside the outer cone, with light intensity attenuating between the two areas. The two values represent the angles between the center of the spot and the cone
  • 7 - Inner Cone Angle - See outer cone angle
  • 8 - Add New Light - This button will add a light to the current render.
  • 9 - Light List - The list will show all lights it can find in the group.You can select a light by clicking it. Once you have selected a light you can edit its motion.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Tutorials/Lightwave 3D exporting lightmaps - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tutorials/Lightwave 3D exporting lightmaps

From Quest3D

< Tutorials
Jump to: navigation, search

Contents

  • 1 Getting Lightmaps from lightwave to Quest 3d in a separate texture stage.
  • 2 Quick steps
  • 3 Full explanation
    • 3.1 Step 1
    • 3.2 Step 2
    • 3.3 Step 3
    • 3.4 Step 4
    • 3.5 Used Plugin

Getting Lightmaps from lightwave to Quest 3d in a separate texture stage.

This tutorial is made to show you how to get lightmap from Lightwave to Quest 3D in a separate texture stage. The advantage of having your diffuse map and lightmap in a separate texture stage is that you can have overlapping in you UV map for the diffuse (saving space), you can tile you Diffuse map if needed and you can easily adjust the diffuse map without having to render the lightmap again.

Quick steps

1 Make two UV sets for your object. The first is for you diffuse map and can have overlapping UV coordinates. The second 1 is for the lightmap and can not have overlapping UV coordinates.

2 Bake your lights to a white texture using the lightmaps ( non overlapping) UV set.

3 Import both UV sets on a separate copy of the object into Quest 3d.

4 Transfer the Lightmap UV set to the other object Using the merge UV set channel tool.

Full explanation

Step 1

As a example I made this very basic scene in Lightwave modeler. It’s a cube and a plain, nothing special.

Diffuse UV Set
Diffuse UV Set
Lightmap UV Set
Lightmap UV Set
Channel Tools
Merge UV Tool
Merge UV Tool
Final

Since this scene contains a cube with the same picture on all sides of the cube, Make UV overlap, making the resolution higher. Then make a second UV set with no overlapping (I used the atlas map type for this) On this particular object the resolution for the diffuse map will be about 9 times higher then the resolution of the lightmap. Now Complete the diffuse map as you like and save your scene.

Step 2

Now load your object into Lightwave Layout, put the surface color on pure white and remove the diffuse map. Add the Surface Baker Shader and for the UV set Pick Lightmap. Now set up your lights and render, the surface baker shader only 1 thread when rendering so if you prefer you can use the Surface Baker Camera witch does support multithreading.

Step 3

So now we have 1 object with 2 different UV sets and textures, to get them into Quest 3D we have to import the object 2 times, one time for the diffuser map and 1 time for the lightmap. So assign the diffuse map to you object with the correct UV set and export it to a .x file. Now assign the lightmap to the object with the correct UV set and export it.

Step 4

Now we have 2 objects in Quest 3D 1 with the diffuse map and 1 with the lightmap. We are now going to copy the UV set from the lightmap object to the diffuse map object so we have 2 different textures and UV sets on 1 object.

To do this go into object mode and control + click both objects. Now right click on 1 on the 2. Now select Channel Tools > Merge UV sets

To make the surfaces easier to recognize I named them all ( RMB on the surface in object mode > Channel Properties)

Make Sure the lightmap object is on the left, if not press “Swap <==>”.

Now set the texture stage you are going to import the UV set to, to 2.

To transfer the UV set, LMB on the Box surface in the left object/row then LMB on the same surface but in the right object/row.

Now click on “Copy UV Selection =>”. Do the same for the plain surface.

Now you can got to the second texture stage of the box surface and select UV set 1 and assign the lightmap texture. Under blender mode (advanced) put the Op to modulate. Do the same for the plain surface and we are finished, you can now remove the lightmap object.

Used Plugin

For this tutorial I used the DSTORM .X exporter (it also works for Lightwave 9). You can download it here:

  • Go to DSTORM webpage for Lightwave 6.5, 7.5 and 8.0 .X exporters

You can find all the information about installing and managing plugins in the help files of lightwave or look here.


Reference Manual/Getting Started/Basics/Linking - Quest3D

Reference Manual/Getting Started/Basics/Linking

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Linking
    • 1.1 General
    • 1.2 Link position colors
    • 1.3 Creating Links

Linking

General

In Quest3D you create a production by linking channels. Channels are linked from child to parent or parent to child. A parent can have multiple children and a child can also have multiple parents.

There are several things you should know when linking channels together.

Link position colors

A black link sqaure is a regular link position. The child linked to such a position usually contains some data that is requested by the parent as soon as it needs the data. A dark red link square usually means that the parent executes the child, or that any type is accepted. All channels can be linked to a red link position but not all channels do something when you execute them, this depends on the channel itself. Executing a text does not have any effect for example. A red link position executes or ‘calls’ a child and therefore it is called a call-channel link position. Links that are connected to a call-channel link position all have an arrow halfway their line.

A yellow square indicates a link position that accepts multiple links. The link square shifts to the right as soon as you link a child to it. This way you can link another child. The yellow link positions are used to render multiple objects or to play a sound on multiple audio channels for example. A yellow link position is called a growing link square.

A blue link position indicates an empty spot. A blue link position is called an empty link position. The difference with a normal (black) empty spot is that this empty spot is the result of a link to a yellow link position.

Creating Links

You are able to link children to each other by drawing a line from one channel to another. You can either draw a line from the top link position or from the bottom child link position to another link position. Just hold down the mouse button and move the mouse to draw a line. Release the mouse position over the channel or child link position to try and create a link. When a link can't be created (the child link position type doesn't accept the channel type or base type) no line will be drawn. If the link is accepted, a line (the actual) link is attached to the two channels.

Please note that when you are creating a link, the child link positions and top link positions of the channels will light up red or green. There is a simple explanation for this: Red link positions will not react to a link you are currently trying to create, green links will accept the link. This is done to aid you in linking, and what might be more important, you are able to see what other links you are also able to create, making room for more creativity.

There are three different kinds of links:

  • With Arrow Down - This usually means the child is called, and indicated the logic and data stream goes down, or that the child is set to a certain value.
  • With Arrow Up - This usually means that the data is requested from the child and is used by the parent.
  • Without Arrow - When no data or logic goes up or down, this link is shown. This link is usually shown when the channel has no fixed function or can be configured differently.

You can link multiple channels at the same time to a parent. Just select the channels you would like to connect to another channel (parent) and begin linking as described above from any of the selected channel link positions. You will see multiple lines drawn. When the mouse is released over the target channel, the editor will try to add as many links as possible. When the channel has a growing child link position (a yellow square) the editor will try to add enough child link positions. When the parent has a few fixed child link sqaures the editor will try to link them one at a time.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


Listener - Quest3D

Listener

Contents

  • 1 Listener
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Doppler Factor
      • 1.3.2 Rolloff Factor
      • 1.3.3 Distance Compensation
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

Listener

General

Used for setting the 'listener' for 3d sounds.

Children

  1. Listener Orientation - Matrix
    • A matrix or a motion that specifies the orientation and the position of the listener. In most cases this is the same matrix that is used for the camera.

Description

When you are using 3D sound you need to specify a the 3d location of the 'listener' for each frame. If you do not call this channel, the 3D sound routines assume the listener has not moved.

The the setting for the listener.

The dialog of the listener presents you with a number of options you can set for the listener.

Doppler Factor

This is the amount of Doppler shift effect for sounds. The Doppler shift effect is the effect you hear when a jet plane rushes by or a car drives by at great speed. The frequency of the sound increases as the object approaches the listener and the frequency decreases as the object moves away from the listener. A value of 0.0 will disable the Doppler effect. A larger Doppler factor than 1.0 will exaggerate the effect.

Rolloff Factor

Sounds that are close to the listener are louder than objects that are removed from the listener. A value of 1.0 will simulate this effect as it sounds in the real world. A value of 2.0 doubles the rolloff effect etc..

Distance Compensation

This value represents the number of meters in one unit in 3D space. Suppose, for example, that the basic unit of measurement is the foot, or 0.3048 meters. This value should then be 0.3048.

CallChannel

Calling this channel will set this channel as the listener and all 3D sound will use this listener for calculating their 3D effect.

Remarks

This channel must be called each frame so 3D sound knows where the 'listener' is.

Tips

If the sound is too quiet or too loud. Try adjusting the roll off factor and distance compensation until you get the results you want.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound


Load ChannelGroup - Quest3D

Load ChannelGroup

Contents

  • 1 Load ChannelGroup
    • 1.1 General
    • 1.2 Children
    • 1.3 Description

Load ChannelGroup

General

Put a loaded channelgroup into an array of groups

Children

  1. Loaded Channelgroup - Group Loader
    • This channel holds a loaded channelgroup that is used to load into memory. Make sure a file is loaded before using the channel.
  2. Group Pool Name - Text
    • The name of the pool where the channelgroup is loaded
  3. Array Place - Value
    • Place number of the channelgroup in the pool if you want to use an array of channelgroups, leave 0 if not. Set to -1 to add to the array, and -2 to use the first empty array position.
  4. Result Array Position - Value
    • OUT: This value is set to the number of the array the group was put in.
  5. Buffer holding a channel group - Buffer
    • Buffer channel where a channel group has been loaded into

Description

You can use this channel to insert a loaded file (the first child is a Group Loader) into a pool (an array of channelgroups).

The second child holds the pool-name that the group should be loaded into

The "Array Place" child value holds the position in the array the group will be loaded into. When this child left empty, no array will be created and the group will be loaded into the pool. If you set this child to position -1 the group will be added to the pool, the position it is placed in will be set into the "Result Array Position" child. When this channel is set to -2, the group will be loaded into the first position of the array that is available. This is useful when a group has been removed from the array and you want to fill the holes in the array.

The "Result Array Position" is set to the number of the array the group was loaded into. This number is usually set to the same number as the "Array Place" except when that child is set to -1 or -2.

You can also use this channel with a channel group that is stored into a database or another Buffer. If you want to use a buffer as a channel group source, don't link a Group Loader channel, but only load a Buffer channel to the last link position. The loader will then use the content of that channel.

This channel is part of the dynamic loading system of Quest3D.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


LoadBufferFromCache - Quest3D

LoadBufferFromCache

Contents

  • 1 LoadBufferFromCache
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

LoadBufferFromCache

General

Loads a file from the cache into a buffer.

Children

  1. Filename - Text
    • Single file name of the file to load.
  2. Cache dir name - Text
    • The sub dir in the cache dir to load the file from.
  3. Buffer to load - Buffer
    • This buffer will receive the content of the file

Description

This channel can load a file from the cache directory. This channel is perfect to load data into an internet application. For safety reasons you cannot specify a path. Only a folder name and a file name are supported.

To save a file into the cache see: SaveBufferInCache

CallChannel

Loads the buffer.

Applications

Load and save data in an internet application or an executable.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


LoadBufferIntoChannel - Quest3D

LoadBufferIntoChannel

Contents

  • 1 LoadBufferIntoChannel
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

LoadBufferIntoChannel

General

Copy data in a buffer into a channel

Children

  1. Buffer - Buffer
    • Buffer holding the source data
  2. Channel - All Types Channel
    • Target channel to store data into

Description

You can use this channel to copy some data that is stored in a Buffer channel into a channel. The data stored in the GroupBuffer channel should be filled with a SaveChannelToBuffer channel, the counterpart of this channel.

The first child is the GroupBuffer that holds the information to store in the channel. The second child is the channel where the data is stored into.

When the channel is called an attempt to store the buffer into the channel is made.

CallChannel

Attempt to store the source buffer into the target channel

Remarks

Also take a look at the SaveChannelToBuffer channel documentation. This is the counter part of this channel.

Not all channels are compatible with this system.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


LoadChannel - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

LoadChannel

From Quest3D

Jump to: navigation, search

Function definition

bool LoadChannel(A3dFileLoader& loader, A3d_ChannelGroup* group);

Description

This function is called by Quest3D when a channel group is load. This function is executed for every channel individually in an order that is determined by Quest3D. This function should be overloaded when a channel must be able to load data that was saved with SaveChannel.

Parameters

Name | Description
loader | An address of a A3dFileLoader class that is passed to every channel that should load data. This class holds a buffer and a number of functions that can be used to load data from the file into a variable. This class is actually an interface to a FileLoader channel.

Return value

Return false when the load routing failed (this will stop loading!), return true if successful

Remarks

When this function is overloaded, the base class LoadChannel function should also be called (see line 2 and 3 of the example). If this is not done, the loading of data might fail because not all data was saved.

See also our general Loading and Saving documentation.

Example

bool Aco_Example1::LoadChannel(A3dFileLoader& loader, A3d_ChannelGroup *group) {
    // First call our base class save routine
    if(!A3d_Channel::LoadChannel(loader, group))
        return false;

    if(loader.GetInfoIfTag("EXPF")) {
        loader.CopyTagDataToPointer(&ourFloat_);
    }
    return true;
}

This example is the counter part of the example of the SaveChannel function. Here the saved data is loaded back into the variable. This is a typical load and save routine.

Related Documentation

SaveChannel, FileLoader Channel, Loading and Saving

One Level Up - A3d Channel

Back to Main Index


LoadChannelGroup - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

LoadChannelGroup

From Quest3D

Jump to: navigation, search

Function definition

A3d_ChannelGroup* LoadChannelGroup( const char* fileName, const char* groupName );

Description

A pointer to the loaded channel group or NULL when this failed.

Parameters

Name | Description
fileName | Filename of the channel group to load. This is a NULL terminated string.
groupName | Name of the pool where the channel group should be loaded into.

Return Value

Pointer to a channel group or NULL if not found.

Remarks

If the groupName is already taken and it is not an array, then the loading will fail and the function will return NULL.

One Level Up - EngineInterface

Back to Main Index


SDK/Channels/Loading and Saving - Quest3D

SDK/Channels/Loading and Saving

< SDK | Channels(Redirected from Loading and Saving)
Jump to: navigation, search

Introduction

There are two functions in the A3d_Channel base class that will help you saving channel data in the channel group file (.cgr). Overload these functions when you want to add data (like settings) to the channel group file when the file is saved in the Quest3D editor. We highly recommended you always use these functions for loading and saving! It is not recommended you work with your own save files because those files will not be distributed by the publish system!

Saving Data

Here is a small example save routine taken from a channel that the wizard creates:

bool Aco_Test1::SaveChannel(A3dFileSaver& saver) {
    if(!A3d_Channel::SaveChannel(saver))
        return false;

    // TODO: Change this to a new tag (max 4 characters)
    // This will save the float value below
    // TODO: Make this routine save your own variables
    float testSaveFloat = 1234.56f;
    saver.SaveTag("XXXX");
    saver.SaveBlockSize(sizeof(float));
    saver.SaveDataToFile(&testSaveFloat, sizeof(float));

    return true;
}

In the declaration of the function notice the saver address as parameter. This is a class that has a buffer and a opened file it is writing to. In the example a number of those functions are used to add data to the buffer.

The first two lines are needed when a channel is derived from another channel. These two lines make sure the base class SaveChannel function is run correctly. You should always included these lines if you derive from a channel, or else your project might not load correctly. The wizard will create this code automatically.

The four lines of code after the comment will add a floating point value to the file being saved. What actually happens in this example is of course useless, but you are able to save any variable with these function.

SaveTag(char* tag)

The SaveTag function needs a four character tag. Of you are saving multiple variables you should come up with an unique tag for every variable that is saved. These tags are important for loading the data again.

SaveBlockSize(DWORD size)

The SaveBlockSize function will tell the saver class the data it is about to save will be of a certain length. This is also important when the data should be loaded, because the data will not be NULL character terminated.

SaveDataToFile(void* data, DWORD size)

The SaveDataToFile function will finally add the actual data to the file. A pointer and the number of bytes to read from that pointer should be given as the parameters.

The function should return true when saving has been completed.

Loading Data

When loading saved data. Make sure you use the same order of loading as saving. That way all data is loaded correctly and the loader will not skip tags. When tags are skipped or not found you might end up with a channel group that can not be loaded. Here is an example created by the wizard and the explanation of the used functions:

bool Aco_Test2::LoadChannel(A3dFileLoader& loader, A3d_ChannelGroup *group) {
    if(!A3d_Channel::LoadChannel(loader, group))
        return false;

    // TODO: Replace this tag with the same tag as used in the saver
    // TODO: Change this loader into something more useful ;-)
    float testLoadFloat;
    if(loader.GetInfoIfTag("XXXX")) {
        loader.CopyTagDataToPointer(&testLoadFloat);
    }

    return true;
}

In this example you are able to see how the saved floating point value from the save example is loaded. The variable is local and discarded so this example is completely useless! You should load into protect member variables of your class.

In the LoadChannel function definition you are able to find a pointer to a class that holds a buffer with the loaded channel group. This class can be used to parse data from the buffer and move the file pointer in the class forward.

Again the first two lines of code after the function definition are there to make sure the base channel class information is loaded correctly. You should always include these two lines of code (with the correct base class) when you have derived your channel from another channel. The wizard will automatically add these lines when needed.

bool GetInfoIfTag(char tag[4])

This function will return true when the given tag is found at the current file pointer. Always first use this function, and if it returns true you should call the next function:

CopyTagDataToPointer(void* data)

The size of the buffer is automatically read (because the SaveBlockSize function is used while saving) and copied to memory of the data pointer. Make sure this pointer is pointing to valid memory or errors will occur.

This function should return true if no fatal error occurred. A tag not being found is not a fatal error! You should continue loading normally.

Backwards Compatibility

If you want to remain backwards compatible (all future versions are able to load older data) you should make sure you never alter the used tags and the order they are used. Also, you are not able to remove any tags from the list of tags that is saved. You are able to add more tags at any time. When loading saved data, just make sure you return true when the tag is not found.

See Also

A3dFileSaver, A3dFileLoader

One Level Up - Channels

Back to Main Index


SDK/Channels/Loading and Saving - Quest3D

SDK/Channels/Loading and Saving

< SDK | Channels
Jump to: navigation, search

Introduction

There are two functions in the A3d_Channel base class that will help you saving channel data in the channel group file (.cgr). Overload these functions when you want to add data (like settings) to the channel group file when the file is saved in the Quest3D editor. We highly recommended you always use these functions for loading and saving! It is not recommended you work with your own save files because those files will not be distributed by the publish system!

Saving Data

Here is a small example save routine taken from a channel that the wizard creates:

bool Aco_Test1::SaveChannel(A3dFileSaver& saver) {
    if(!A3d_Channel::SaveChannel(saver))
        return false;

    // TODO: Change this to a new tag (max 4 characters)
    // This will save the float value below
    // TODO: Make this routine save your own variables
    float testSaveFloat = 1234.56f;
    saver.SaveTag("XXXX");
    saver.SaveBlockSize(sizeof(float));
    saver.SaveDataToFile(&testSaveFloat, sizeof(float));

    return true;
}

In the declaration of the function notice the saver address as parameter. This is a class that has a buffer and a opened file it is writing to. In the example a number of those functions are used to add data to the buffer.

The first two lines are needed when a channel is derived from another channel. These two lines make sure the base class SaveChannel function is run correctly. You should always included these lines if you derive from a channel, or else your project might not load correctly. The wizard will create this code automatically.

The four lines of code after the comment will add a floating point value to the file being saved. What actually happens in this example is of course useless, but you are able to save any variable with these function.

SaveTag(char* tag)

The SaveTag function needs a four character tag. Of you are saving multiple variables you should come up with an unique tag for every variable that is saved. These tags are important for loading the data again.

SaveBlockSize(DWORD size)

The SaveBlockSize function will tell the saver class the data it is about to save will be of a certain length. This is also important when the data should be loaded, because the data will not be NULL character terminated.

SaveDataToFile(void* data, DWORD size)

The SaveDataToFile function will finally add the actual data to the file. A pointer and the number of bytes to read from that pointer should be given as the parameters.

The function should return true when saving has been completed.

Loading Data

When loading saved data. Make sure you use the same order of loading as saving. That way all data is loaded correctly and the loader will not skip tags. When tags are skipped or not found you might end up with a channel group that can not be loaded. Here is an example created by the wizard and the explanation of the used functions:

bool Aco_Test2::LoadChannel(A3dFileLoader& loader, A3d_ChannelGroup *group) {
    if(!A3d_Channel::LoadChannel(loader, group))
        return false;

    // TODO: Replace this tag with the same tag as used in the saver
    // TODO: Change this loader into something more useful ;-)
    float testLoadFloat;
    if(loader.GetInfoIfTag("XXXX")) {
        loader.CopyTagDataToPointer(&testLoadFloat);
    }

    return true;
}

In this example you are able to see how the saved floating point value from the save example is loaded. The variable is local and discarded so this example is completely useless! You should load into protect member variables of your class.

In the LoadChannel function definition you are able to find a pointer to a class that holds a buffer with the loaded channel group. This class can be used to parse data from the buffer and move the file pointer in the class forward.

Again the first two lines of code after the function definition are there to make sure the base channel class information is loaded correctly. You should always include these two lines of code (with the correct base class) when you have derived your channel from another channel. The wizard will automatically add these lines when needed.

bool GetInfoIfTag(char tag[4])

This function will return true when the given tag is found at the current file pointer. Always first use this function, and if it returns true you should call the next function:

CopyTagDataToPointer(void* data)

The size of the buffer is automatically read (because the SaveBlockSize function is used while saving) and copied to memory of the data pointer. Make sure this pointer is pointing to valid memory or errors will occur.

This function should return true if no fatal error occurred. A tag not being found is not a fatal error! You should continue loading normally.

Backwards Compatibility

If you want to remain backwards compatible (all future versions are able to load older data) you should make sure you never alter the used tags and the order they are used. Also, you are not able to remove any tags from the list of tags that is saved. You are able to add more tags at any time. When loading saved data, just make sure you return true when the tag is not found.

See Also

A3dFileSaver, A3dFileLoader

One Level Up - Channels

Back to Main Index


SDK/Channels/Loop protection - Quest3D

SDK/Channels/Loop protection

< SDK | Channels(Redirected from Loop protection)
Jump to: navigation, search

Loop protection

Because it is fairly easy to create an endless loop in Quest3D we've added a function that will protect you from entering an endless loop. The CheckRenderCount() function will return true when it is the first time the channel is called this tree count/frame. If this function returns false, you should not call any children. That will protect you from those children calling you again etc etc...

if (CheckRenderCount()) {
       // Call some children
       // Calculate yourValue
} else {
       // Do nothing!
       // or something simple
}
return yourValue;

At the same time, you are able to calculate values that are returned only once per tree count/frame (if wanted) or else, if there are a lot of links (or short cuts) to the channel, all calculations will be done several times.

One Level Up - Channels

Back to Main Index


SDK/Channels/Loop protection - Quest3D

SDK/Channels/Loop protection

< SDK | Channels
Jump to: navigation, search

Loop protection

Because it is fairly easy to create an endless loop in Quest3D we've added a function that will protect you from entering an endless loop. The CheckRenderCount() function will return true when it is the first time the channel is called this tree count/frame. If this function returns false, you should not call any children. That will protect you from those children calling you again etc etc...

if (CheckRenderCount()) {
       // Call some children
       // Calculate yourValue
} else {
       // Do nothing!
       // or something simple
}
return yourValue;

At the same time, you are able to calculate values that are returned only once per tree count/frame (if wanted) or else, if there are a lot of links (or short cuts) to the channel, all calculations will be done several times.

One Level Up - Channels

Back to Main Index


Lua Script - Quest3D

Lua Script

Contents

  • 1 Lua Script
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Getting a channel
    • 1.5 Accessing a function of a channel
    • 1.6 Calling a channel from LUA
    • 1.7 Using Quest3D system functions
    • 1.8 Available Quest3D system functions
      • 1.8.1 Load a group
      • 1.8.2 Remove a group
      • 1.8.3 Get the tick count
    • 1.9 Quest3D Download Manager functions
      • 1.9.1 Download ChannelGroup
        • 1.9.1.1 Download Texture
        • 1.9.1.2 Get the download progress
        • 1.9.1.3 Cancel a download
        • 1.9.1.4 Load a file from disk
        • 1.9.1.5 Load a file from dynamically
    • 1.10 Get Public From Group functions
  • 2 LUA – Array communication functions
    • 2.1 Getting a reference to a table
    • 2.2 Getting the number of rows in a table
    • 2.3 Getting a reference to a Column
    • 2.4 Getting a reference to a Row
    • 2.5 Setting content to an array table
      • 2.5.1 Setting content via a Row reference.
      • 2.5.2 Setting content via a Column reference.
    • 2.6 Getting content from an array table
      • 2.6.1 Getting content via a Row reference.
      • 2.6.2 Getting content via a Column reference.
  • 3 LUA – Array commands
    • 3.1 Clear table command
    • 3.2 Erase command
      • 3.2.1 Erase column
      • 3.2.2 Erase row
    • 3.3 Delete command
    • 3.4 Copy Command
      • 3.4.1 Copy colum
      • 3.4.2 Copy row
    • 3.5 SwapContent Command
      • 3.5.1 Swap Colums
      • 3.5.2 Swap rows
    • 3.6 Sort Command
  • 4 Safety
  • 5 CallChannel
  • 6 Applications
  • 7 Tips
  • 8 See Also

Lua Script

General

Use LUA scripting inside Quest3D

Children

  1. Channels to access - All types are accepted
    • Link all channel you want to access from LUA here.

Description

This channel implements the LUA (www.lua.org) scripting language for Quest3D. You can use LUA for logic, text processing, loading files and many other things..

For safety reasons, not all standard LUA functions are available. Only the following subsets are available:

  • Base example
  • String example
  • Math example

To access Quest3D functionality from LUA you need to use the following syntax:

Getting a channel

local filenameChannel = channel.GetChild(0)

This gets a reference to the first channel linked to the LUA channel and stores it in the “filenameChannel” variable. From now on you can access this channel through this variable

Getting a reference to a public channel is almost similar:

local filenameChannel = channel.GetPublic (2,0)

This gets a reference to the third channel linked to the LUA channel. This channel must be a public caller. The second parameter selects the index in the pool. If you do not have a group array in the pool but just a single group, just fill in 0 for this value.

Accessing a function of a channel

Each channel has some functions available. You can access some of these functions through LUA. You can get the text from a channel and put it in a variable for example:

local nameChannel = channel.GetChild(0)
local someText = nameChannel:GetText()

This assigns the text contained in the text channel to the “someText” variable.

You can also do it the other way around:

nameChannel:SetText(someText)

This sets the text of the text channel.

local someValue = aValueChannel:GetValue()
local nameChannel:SetValue(someValue)

Use these functions to set or get values

Get and Set - Value and Text LUA example

Calling a channel from LUA

You can easily use LUA to call channel by using something like this:

ToChannel:CallChannel()

LUA CallChannel example

Using Quest3D system functions

In Quest3D, the “q” object is available inside LUA. You can use this object to access Quest3D system functions. You can simply access Quest3D functions using the following syntax:

q.RemoveDQ()

Available Quest3D system functions

Load a group

q.LoadChannelGroup("group.cgr", "PoolName", instance)

The first parameter is the filename (relative paths), the second parameter the target pool. The last parameter is the index for the target pool. When left out, the index is 0 by default.

LUA Load and Remove Channel Group example

Remove a group

q.RemoveChannelGroup("PoolName", instance)

The group is removed from the pool named "PoolName". The last parameter is the index for the target pool. When left out, the index is 0 by default.

Get the tick count

local value = q.GetTick()

Retrieves the TickCount (the elapsed time since last frame)

Quest3D Download Manager functions

Quest3D has a download manager for downloading data from disk or the internet. This download manager can only be used from LUA. The download manager allows you to put files into a global download queue.

The Download manager will download all files in the queue, downloading maximum 5 files at a time. This method is much faster than downloading files one by one and does not bring your internet connection down to a halt as with downloading too many files at once.

An additional benefit of the download manager is that you can retrieve its progress. This is an easy method to display a progress indicator.

The download manager has a value between 0 and 1 for each file in the queue. A value of 0.1 for example translates to a download progress of 90%. The progress returned by the download manager is sum of all the progress values in the queue.

You can calculate the download percentage by comparing the number of files remaining in the queue with the number of files you added in the first place.

When you do not know the number of files that were put in the queue, you can use a simple mechanism to still get a percentage:

  • The total download size is the maximum number of files you got from the download manager.
  • When the download manager returns 0, reset the maximum number of files and start counting from there.

When adding files to the queue, you can assign them to a batch. This is useful for two things: getting separate progresses indication for each batch or canceling the download of individual batches. You do not have to use batches. It's just an easy method to divide the download into packages.

The batches allow you to manage the download queue in more detail. For example you can cancel a batch when the user hits a certain option so the files currently downloading are not needed anymore.

Another great option you have with batches is to start the download of all your collision meshes first and assign them to a batch. When the collision for a scene is ready downloading you can already start the application while all the other files that are still downloading pop up while the user is navigating through the scene.

Download ChannelGroup

q.LoadChannelGroupDQ(“filename”,”PoolName”, index in pool, “Batch name”)

The parameters are straight forward; first the filename, then the pool name where you want to put the group and the index of the pool. The last parameter is optional; it is the batch label you want to assign to the download.

Download manager with progress value example

Download Texture
q.LoadTextureDQ(filename:GetText(), texture, “Batch name”)

The parameters are straight forward; first the filename, then the reference of texture where you want to load the texture. The last parameter is optional; it is the batch label you want to assign to the download.

Load Texture example

Get the download progress
q.GetDQProgress(“Batch name”)

When you do not specify a parameter it returns the total number of files in the queue

Download manager with progress value example

Cancel a download
q.RemoveDQ("Batch name")

Removes files from the download queue. When you do not specify a batch parameter, the entire queue is cleared.

Load a file from disk
q.LoadBuffer("File name", Buffer Channel")

Loads a file from disk and puts the result in the buffer that is provided using the second parameter. When this function returns it either failed to load the file or the buffer contains the file.

Load a file from dynamically
q.LoadBufferDQ("File name", Buffer Channel, “Batch name”)

Loads a file using the built in download queue system of Quest3D.

The data will be put in the buffer channel that is provided to this function as the second parameter.

The download queue loads all files in the background. This also means that you can never assume the buffer contains the file without checking the (down)load status first.

There are two methods you can use to check the download status. You can either check if the download queue was finished or you can get the status from the buffer directly.

The third parameter allows you to label your (down)load. This is useful if you want to get the download status of a subset of the download queue later or you want to remove a subset of downloads from the queue.

Get Public From Group functions

Available from Quest3D 3.6.

In lua you can get access to a public channels without linking

channel.GetPublicFromGroup(“groupname”, “publicname”)

Note that this public caller group must be loaded before you can call it ( this command will NOT load the group!)

GetPublicFromGroup Example

LUA – Array communication functions

These features are added on the 3.5 release.

Array communication functions example

Getting a reference to a table

local table = q.GetTable("TableName")

This gets a reference to the table with the assigned name "TableName" and stores it in to the table variable. From now on you can access this table through this variable.

Getting the number of rows in a table

local numberofRows = table:GetRowCount()

This gets the number of rows in a table

Getting a reference to a Column

local column = table:GetColumn("ColumnName")

This gets a reference to the table Column with the assigned name "ColumnName" and stores it in to the column variable. From now on you can access this column through this variable

Getting a reference to a Row

local row = table:GetRow("0")

This gets a reference to the table Column with the row ID '0' and stores it in to the row variable. From now on you can access this row through this variable

Setting content to an array table

The SetContent() command give you the possibility to set data to the array via a column-row reference.

Setting content via a Row reference.

In the example below the "Set row data" text is set to the row ID 0 in the column "ColumnName" of a table.

local table = q.GetTable("TableName")
local column = table:GetColumn("ColumnName")
local row = table:GetRow(0)

row:SetContent(column, "Set row data")

With this approach you set a fix row and you can move horizontal trough the different column of a table.

Setting content via a Column reference.

In the example below the "Set row data" text is set to the column reference "ColumnName" with the row ID 0 of a table

local table = q.GetTable("TableName")
local column = table:GetColumn("ColumnName")

column:SetContent(0, "Set column data")

With this approach you set a fix Column and you can move vertical trough the rows of a column.

Getting content from an array table

The GetContent() command give you the possibility to get data from the array via a column-row reference.

Getting content via a Row reference.

In the example below data is read out of the row ID 0 from the Column "ColumnName" of a table and stored in the text variable.

local text

local table = q.GetTable("TableName")
local column = table:GetColumn("ColumnName")
local row = table:GetRow(0)

text = row:GetContent(column)

With this approach you get a fix row and you can move horizontal trough the different column of a table.

Getting content via a Column reference.

In the example below data is read out of the Column "ColumnName" with the row ID 0of a table and stored in the text variable.

local text

local table = q.GetTable("TableName")
local column = table:GetColumn("ColumnName")

text = column:GetContent(0)

With this approach you get a fix Column and you can move vertical trough the rows of a column.

LUA – Array commands

LUA – Array commands example

Clear table command

You can easily clear a complete table with the Clear() command.

local table = q.GetTable("TableName")
table:Clear()

This deletes all rows of all columns in an array table

Erase command

With the Erase() command you can erase a column or a row.

Erase column

With the Erase() command you can erase a column.

local table = q.GetTable("TableName")
local column = table:GetColumn("ColumnName")

column:Erase()

This erases all row in of one column in a table

Erase row

With the Erase() command you can erase a column or a row.

local table = q.GetTable("TableName")
local row = table:GetRow(0)

row:Erase()

This erase all data in the row ID 0 of all column of a table. It does NOT remove-delete the row from the table, so it does not effect the total amount of rows!

Delete command

With the Delete command you can delete-remove a row from all column in a table.

local table = q.GetTable("TableName")
local row = table:GetRow(0)

row:Delete()

This delelets the row ID 0 (and it data) from all columns in a table. This will affect the total amount of row in a table.

Copy Command

Copy colum

With this Copy() command you can copy all (rows) data from one Column to another column (of the same base type – also to a Channel Array).

local table = q.GetTable("TableName")
local column1= table:GetColumn("ColumnName")
local column2 = table:GetColumn("CopyColumnName")

column1:Copy(column2)

This copies the data of Column1 into Column2.

Copy row

With this Copy() command you can copy one rows of all Column to another row of a table..

local table = q.GetTable("TableName")
local row0 = table:GetRow(0)
local row1 = table:GetRow(1)

row0:Copy(row1)

This copies the data from row0 to row1

SwapContent Command

Swap Colums

With this command you can swap the content of two columns (of the same base type – also to a Channel Array) with each other.

local table = q.GetTable("TableName")
local column1= table:GetColumn("ColumnName")
local column2 = table:GetColumn("CopyColumnName")

column1:SwapContent(column2)

This swaps the data of Column1 with the data of Column2.

Swap rows

With this command you can swap the content of two rows with each other.

local table = q.GetTable("TableName")
local row0 = table:GetRow(0)
local row1 = table:GetRow(1)

row0:SwapContent(row1)

This swaps the content of row0 with the content of row1.

Sort Command

This command gives the possibility to sort data in a column, this can be done with text and value based data. This operation will sort the rows of all columns in a table based on the column you ask to be sort Ascending or Descending.

local table = q.GetTable("TableName")
local column= table:GetColumn("ColumnName")

table:SortAscending(column)

or

table:SortDescending(column)

This will sort the array table “TableName” Ascending or Descending based on the date of the ColumnName column.

Safety

Some standard LUA functions are not be included because they would allow someone to do damage. For example, most I/O functions are disabled.

CallChannel

The script will be executed when you call this channel, this means the "CallChannel()" function will be called in the script. The channel can also be used as a Value channel, then the "GetValue()" Lua Script function will be called and the value of the channel will be set to the return value of the "GetValue()" function.

Applications

Logic, loading, file management, value processing, text processing

Tips

Be aware that this is a scripting language and might reduce the performance when used extensively in real time.

See Also

Tutorial

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Scripting


Reference Manual/Getting Started/Basics/Make it work - Quest3D

Reference Manual/Getting Started/Basics/Make it work

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Making it work!
    • 1.1 General
    • 1.2 Step 1. Make sure you clear the screen
    • 1.3 Step 2. Present the result
    • 1.4 Step 3. Add a BeginScene and EndScene
    • 1.5 Step 4. Play the timers
    • 1.6 Step 5. Go full screen
    • 1.7 Step 6. Quitting

Making it work!

General

This chapter describes how you can turn a Quest3D project into a working demo, presentation, game, or simulation. This is a checklist of things you need in order to make a project viewable in a viewer. This chapter won’t go into all the different viewers that are available but it will cover all the things that count for all viewers.

Step 1. Make sure you clear the screen

In the editor you always have a colored background. In the viewers you have no background. This means that the previous frame is visible in the next frame. Even worse, the display will flicker or is heavily distorted. To fix this you need to call a ClearScreen each frame.(see picture)

Step 2. Present the result

Everything in Quest3D gets rendered into a screen that is not visible. When the rendering is finished you need to present the result so it is visible. To present the result at the end of the frame you need to call the Present channel. The present channel does not work in the editor that is why the ‘If not in editor’ is used. The ‘if’ ensures the present only called in the viewers. Notice that the present channel is not surrounded by a blue rectangle. This is because the picture is from the editor where the present is not called.

Step 3. Add a BeginScene and EndScene

DirectX 8 requires that it know when you are ready to start rendering and when you are done with rendering. To do this you have to call a Command channels and configure them as BeginScene and an EndScene commands.

Step 4. Play the timers

Everything up until step 3 is enough to display everything in one of the viewers. Very often you want a timer to start as soon as the project is loaded and you want it to loop as long as the project runs. To do this you need to call a Timer Command at the start of the frame. To make sure the timerCommand is called only once you need to use a OneTime. Notice that the TimerCommand is not surrounded by a light blue square. This is because it is not called anymore after the first time.

Did you know you could double click on a channelCaller to bring up a dialog that allows you drag linked channels in order to change their order? This way you can easily add the onetime before the links that are already in place.

Step 5. Go full screen

By calling the GoFullScreen you can go into full screen mode. You have to watch out that you do not call this channel when you are in the editor. You cannot go into full screen when you are in the editor.

Step 6. Quitting

If you follow these steps you end up with a project that runs in a viewer, starts a timer and allows you to go into full screen mode. How do we tell the viewer to Quit? You can quit Quest3D by calling a Command that is configured as a ‘Quit the app’ Command.

At what point we want to quit the viewer depends on the project. Some project quit when you press a key, some quit when you press a menu entry and others quit when a timer has reached a certain time. In the picture the viewer quits when the user presses the ESC key.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


Tutorials/Object Oriented Programming/Manager Pattern - Quest3D

Tutorials/Object Oriented Programming/Manager Pattern

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Manager
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Object.cgr
    • 1.5 Primitive.cgr
    • 1.6 ObjectManager.cgr
    • 1.7 start.cgr
    • 1.8 Examples
    • 1.9 External Links

Manager

Introduction

The manager pattern is often used to generalize operations on objects from the same interface. If we, for instance, want to generate a lot of instances of geometric objects, it's common practice to have these geometric objects derive from the same interface. This way all the operations on these objects (spawning, update, render, collisiondetection, etc) can be handled in a special class: the object manager.

The great thing about operational generalization is that as long as your object derives from the specified interface, it will get processed by the object manager.

Functional description and context

In this tutorial some simple geometric objects, derived from the same interface, will be generated and handled by an object manager.

So what do we need?

  • A generic object interface of which the geometric objects are derived from;
  • Definition of our geometric objects;
  • A manager class which spawns, updates and renders the objects.

Design

As shown in the diagram:

The Primitive object consists of:

  • IObject, which contains the generic objectdata;
  • IPrimitive, which contains the primitive data.

The ObjectManager consists of:

  • A container of the objects which will be managed;
  • Fieldsize, the size of the field (2D) where we will be spawning the objects in;
  • the spawnObject()-function, which contains the logic for spawning a random primitive at a random location in the specified field;
  • and ofcourse the typical init-, update- and draw-functions.

Object.cgr

The "IObject"-interface is the same as used in the other pattern tutorials, with a small addition: the velocity-member. The velocity member, in combination with the object's rotation, will be used to calculate the next object position:

nextPos = currentPos + velocity * (-sin(rotation.x), 0, cos(rotation.x))

1. Create the "IObject"-interface:

2. Implement "IObject"-'s member accessors.

3. Implement update()-function:

Note that before we set the new position, we do a boundcheck. This ensures that the object will not move beyond the specified fieldSize.

4. Implement the draw()-function, which renders a NULL-object.

Primitive.cgr

"IPrimitive" assumes a class inherits from "IObject" aswell, and therefor only contains additional members to make primitive-rendering possible:

  • type - the primitivetype;
  • subdivision - the amount of primitive subdivisions;
  • color - the primitive's emissive color (default: 1,1,1 (white)).

5. Create the "IPrimitive"-interface:

6. Create the "CPrimitive"-class, which implements the "IObject"- and "IPrimitive"-interfaces;

7. Overload the "draw"-function and implement it:

ObjectManager.cgr

The ObjectManager will be used to manage the primitive objects. In order to do this the ObjectManager has a list of all the objects it has to update and render. This list is maintained by the objectmanager. The only parameters set from the 'outside' are the number of primitives to be generated (on initialization) and the fieldSize.

The ObjectManager has the following functions:

  • init() - Initializes the objectmanager: clears the instancelist, sets the fieldsize and spawns the specified number of primitives;
  • update() - Updates all the instances in the list;
  • draw() - Renders all the instances in the list;
  • spawnObject() - Spawns a primitive object with random size, rotation and position in the field.

8. Create the "IObjectManager"-interface:

9. Implement the init()-, update()- and draw()-functions;

10. Implement the spawnObject()-function:

11. Create the "CObjectManager"-class implementing "IObjectManager".

start.cgr

Since all the logic for this tutorial is in the ObjectManager, the start CGR is pretty straightforward.

12. Create the init-routine which initializes the objectmanager with "numObjects" and "fieldSize" as parameters;

13. Create the update- and draw-routines (these just call "ObjectManager"'s update()- and draw()-functions);

14. Defined 2 user input controls:

  • 'r': resets the objectmanager;
  • 'spacebar' : spawns a new object.

Examples

  • Manager Pattern

External Links

Categories: Tutorials | OO


Tutorials/Manual - Quest3D

Tutorials/Manual

< Уроки
Jump to: navigation, search

Содержание

  • 1 Учебное Руководство
    • 1.1 Часть I: Введение
    • 1.2 Часть II: Виртуальная студия
    • 1.3 Часть III: Программирование
    • 1.4 Часть IV: Экспертный уровень
    • 1.5 Приложения

Учебное Руководство

Tutorial manual cover

Часть I: Введение

  • Раздел 1.1: Введение
  • Раздел 1.2: Как пользоваться данным руководством
  • Раздел 1.3: Установка Quest3D
  • Раздел 1.4: Примеры сцен
  • Раздел 1.5: Пользовательский интерфейс Quest3D
  • Раздел 1.6: Каналы
  • Раздел 1.7: Программный поток
  • Раздел 1.8: Шаблоны
  • Раздел 1.9: 3D сцены
  • Раздел 1.10: Публикация
  • Раздел 1.11: Итоги

Часть II: Виртуальная студия

  • Раздел 2.1: 3D Объекты
  • Раздел 2.2: Анимация
  • Раздел 2.3: Импорт объектов
  • Раздел 2.4: Свойства поверхности
  • Раздел 2.5: Освещение и тени
  • Раздел 2.6: Камеры
  • Раздел 2.7: Графический пользовательский интерфейс
  • Раздел 2.8: Звук и музыка
  • Раздел 2.9: Ландшафты
  • Раздел 2.10: Системы частиц
  • Раздел 2.11: Анимация персонажей

Часть III: Программирование

  • Раздел 3.1: Логика
  • Раздел 3.2: Математика
  • Раздел 3.3: Цикл For
  • Раздел 3.4: Массивы
  • Раздел 3.5: Множественные группы каналов
  • Раздел 3.6: Математические операторы
  • Раздел 3.7: Поиск пути
  • Раздел 3.8: Finite State Machine

Часть IV: Экспертный уровень

  • Раздел 4.1: Управление проектом
  • Раздел 4.2: Имитация физики
  • Раздел 4.3: Подключение баз данных
  • Раздел 4.4: Сеть
  • Раздел 4.5: Lua скриптинг

Приложения

  • Импорт из Max и Maya
  • Список действий пользовательского интерфейса
  • Горячие клавиши
  • ActiveX

Перевел Ovod, 2008

Категории: Уроки | Справочное Руководство


Material - Quest3D

Material

Contents

  • 1 Material
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Material

General

Defines the material color properties for a Surface

Children

  1. Texture Blend Factor - Value
    • This value is used to fade between textures or fade the object itself when textures are present.
  2. Alpha Diffuse - Value
    • When no texture is present this value can be used to simulate object fading.
  3. Diffuse - Value Vector
    • Diffuse is the color that is calculated using the lights diffuse color in the current scene.
  4. Emmisive - Value Vector
    • Emissive color can be used to make a rendered object appear to be self-luminous.
  5. Specular - Value Vector
    • Specular color is used to give a shine to the object that works the same way as diffuse in that it is dependent of lights in the scene.
  6. Power - Value
    • This defines the hardness of the specular setting. Low values will result in a small highlight. Higher values will result in a dull surface.

Description

A Surface determines the material settings using the settings of a Material channel.

The first child link position holds the diffuse color settings. Diffuse is the color that is calculated using the lights diffuse color in the current scene. The diffuse color takes into account the position and type of the lights in the scene.

You can use a material's emissive child link to add the illusion that an object is emitting light, without incurring the computational overhead of adding a light to the scene. In the case of the blue crystal, the emissive property is useful if you want to make the crystal appear to light up, but not cast light on other objects in the scene. Remember, materials with emissive properties don't emit light that can be reflected by other objects in a scene. To achieve this reflected light, you need to place an additional light within the scene.

Specular reflection creates highlights on objects, making them appear shiny. This channel contains two members that describe the specular highlight color as well as the material's overall shininess. You establish the color of the specular highlights by setting the Specular child to the desired color. The most common colors used to create a highlight is white or light gray. The values you set in the "Power" child control how sharp the specular effects are.

CallChannel

When called, this material will be send to the 3D card as the current material settings. All next objects without material settings will use these settings.

Remarks

If you do not attach a material to a surface the object will take the properties of the last surface that was rendered. This can be used to get a speed increase.

Applications

A Surface uses this as a child to set this material to the 3D card.

Tips

You can delete the childeren and still have a fully working material. This will give a speed increase since the values do not need to be obtained from its childeren. This way you do not have control over the colors but this is useful if the colors are supposed to be static. The material will remember the children that were linked the last time it was used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing


Reference Manual/Editor/Object Section/Material or Shader Properties - Quest3D

Reference Manual/Editor/Object Section/Material or Shader Properties

From Quest3D

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Contents

  • 1 Material or Shader Properties
    • 1.1 General
    • 1.2 Surface Selection
    • 1.3 Alpha Value
    • 1.4 Channel Property Dialogs
    • 1.5 Notes

Material or Shader Properties

General

In this window you are able to change the material properties of the selected surface or the properties of a HLSL surface.

The following properties apply when a normal surface is selected. The properties for a HLSL surface depend on the properties of the HLSL script.

  • 1 - Diffuse - The diffuse color is the base color of an object. It is used to calculate the lighting of a surface. After the lighting is calculated the emissive color is addded and the resulting color is used for texture blending.
  • 2 - Emmisive - The emissive color of the surface (color is added with same intensity to entire surface)
  • 3 - Specular - The glossiness of the surface and the color of the gloss. The ‘P’ slider controls the power of the specular. With the power slider you can set the harshness or dullness of the gloss.
  • 4 - Alpha Value - The alpha value of the surface (fades the object or texture)
  • 5 - Tex Factor - Change the texture factor. This factor is used by certain blend modes.
  • 6 - Surface Visible - Toggle the visibility of the selected surface(s).

Surface Selection

When using these controls you change the material settings of all the surfaces that are selected. You are able to select a single surface or all surfaces of a object at the same time. When a slider is moved, all materials are changed at the same time. Please see the Surface List documentation for more help on selecting multiple surfaces.

Alpha Value

The alpha slider can control two things. It can either fade the object from opaque to transparent or fade between two textures. The function of the alpha slider is depends on the surface and texture settings of the surface.

Channel Property Dialogs

You can click on the buttons to the right of the sliders to bring up the channel properties dialog of the value. If the value is an envelope an envelope dialog will pop up.

Notes

  • You do not have to link values to a material. If you do not link any values the material will use its internal values.
  • If you have many surfaces the material can increase the number of channels dramatically. The solution is to delete all the children of material so it stores the values internally.

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


Reference Manual/Editor/Object Section/Materials Window - Quest3D

Reference Manual/Editor/Object Section/Materials Window

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Contents

  • 1 Materials Window
    • 1.1 Project Materials
    • 1.2 Disk Materials
    • 1.3 Material Differences

Materials Window

The Material Windows displays a list of materials, loaded into your project, or on disk. You can browse through the materials and load them into your project or apply them to your selected surfaces. A material can hold colors, textures and/or shaders.

Project Materials

When the “Project” option is selected, a list of materials is shown that is loaded into your project. If a material is selected from the list, it will be applied to the surfaces that are selected. The same material resource is applied to all surfaces, meaning that all properties are shared. If a property of the material is changed through the Material or Shader Properties window, all of the surfaces that share the same material will be changed at the same time!

When starting a new project, the material list is empty. There are two ways to load materials into your project, using the “Disk” option, or click on the “Load…” button. The “Disk Materials” option is explained below, and with the “Load…” button you can load a material file from any location.

With the drop down list you can select the size of the material list thumbnails. This is useful when you have a lot of materials in your project and want to see them all at once. Also useful when you have materials with small differences that can only be seen when the thumbnail is larger.

By clicking with the right mouse button on a material in the list you can select the following options from the context menu: Duplicate – This will create another copy of the current loaded material

Delete – This will delete the material from your project, and also from disk. Please note that all surfaces that use this material will loose their material settings!

Rename – Change the name of a material. Very useful after the “Duplicate” function was used.

Update image – This will force Quest3D to render a preview into the thumbnail of the selected material.

Save Material to disk – With this function you can save the material to disk as a Quest3D channel group file.

When your project is saved, the material will be saved into a special “Resources” folder. This folder is created and managed automatically by Quest3D and is placed in the folder holding the start channel. When your project is published, this resources folder with materials is included automatically. When you don’t want to include certain materials in your project then use the “Delete” function from the context menu; but make sure the material is not used on any surface in your project!

Disk Materials

The “Disk” option will show a list of all materials that are on disk. Before you can apply a material you will need to load one from disk. After selecting the “Disk” option in top of the window you will get a list of materials. By default, this is the list of materials that is in the “Materials” folder of your Quest3D installation folder. Folders and sub-folders will also be displayed in the material list and they can be clicked once to view the contents. The folder up icon will also appear in the material list.

To load a material from disk into your project, click on the desired material. You will be asked if you are sure and afterwards you can find the loaded material in your project materials list. It can be useful to load a material a couple if times if you want separate instances for separate surfaces, just click on the same material again to load another instance.

Use the remove button to remove a material from the selected surface. To remove a material from the current project you can right click a material and use the delete function. Once a material is used in your project and saved in the resource folder the material will be loaded when the project is reloaded that uses one of the materials.

Material Differences

The Materials window should not be confused with the material/shader window. Materials are an alternative to the regular surface configuration system the differences between materials and the regular surface configuration are:

  • Materials must be loaded from disk. A shader contains everything that turns surface properties into a shaded surface.
  • Materials are global. When you share a material between several objects, you do not have to worry about sharing textures for example.
  • Materials show a preview in the list. This allows you to apply materials in a same fashion as textures.
  • Materials can have textures specified internally. Applying a texture like you would do with regular surfaces overrides the internal texture.
  • When saving a project all internal materials will be saved in a resource directory that exists besides your startgroup channelgroup. Or when you use a Resource Manager channel, the materials will be saved inside the channel group (*.cgr) file.

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


Matrix - Quest3D

Matrix

Contents

  • 1 Matrix
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Matrix

General

Represents a transformation.

Children

none'

Description

A matrix is a table of 16 values. These 16 values are used to specify the location, rotation and sizing of an object (also called a transformation). The matrix is also used to specify an projection for a camera.

In most cases you want these 16 values to be calculated automatically you can use several channels for this that have the matrix as base type. An easy method for constructing the location of an object, camera or light is the Motion. To construct a projection for the camera you can use the ProjectionMatrix.

You can also use the channel properties dialog to manually create a matrix. In the dialog you are able to change the values of the 4x4 matrix.

CallChannel

Calling this channel has no effect.

Remarks

If you want to construct a matrix that only represents a rotation, sizing or a position it is better to use the MatrixOperator in stead of a Motion. This way the matrix is calculated faster.

Applications

  • Specify a rotation, scaling and rotation.
  • Specify a projection for a Camera
  • Linear algebraic calculations.

Tips

  • To 'parent' one matrix to another you can multiply them with the MatrixOperator.
  • You can transform any VectorOperator by multiplying it with a Matrix.
  • You can get the opposite of a Matrix by inversing the matrix with the MatrixOperator.
  • To copy or set another matrix you can call the Set Matrix with the first child as the source and the second child as the destination.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


MatrixOperator - Quest3D

MatrixOperator

Contents

  • 1 MatrixOperator
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 IdentityMatrix
      • 1.3.2 Multiply Two Matrices
      • 1.3.3 Matrix Inverse
      • 1.3.4 Get Movement Matrix from Matrix
      • 1.3.5 Get Rotation Matrix from Matrix
      • 1.3.6 Get Current View Matrix
      • 1.3.7 Get current Camera Matrix
      • 1.3.8 OrthoLH with Zoom
      • 1.3.9 Create Look at Matrix
      • 1.3.10 Reflect matrix in xy
      • 1.3.11 Shadow Matrix in XY
      • 1.3.12 Transpose Matrix
      • 1.3.13 Get Current Projection Matrix
      • 1.3.14 Get Current World Matrix
      • 1.3.15 Create Sizing matrix
      • 1.3.16 Create Rotation Matrix
      • 1.3.17 Create Rotation Matrix from direction
      • 1.3.18 Create Translations Matrix
      • 1.3.19 Get Sizing Matrix from Matrix
      • 1.3.20 Convert to 3x3 Texture Matrix(matrix)
      • 1.3.21 Create Matrix from vectors (vector 4x)
      • 1.3.22 Get Bone Matrix (Skinnged Character, value (boneNr))
      • 1.3.23 Create matrix from position and normal (vector 2x)
      • 1.3.24 Matrix Damping (matrix, value)
      • 1.3.25 ODE Matrix Damping (matrix, value)
      • 1.3.26 Matrix Interpolate (matrix, matrix, value)
      • 1.3.27 Get matrix from objectdata (3d objectdata)
      • 1.3.28 Create projection matrix for large view
      • 1.3.29 Matrix Perspective Fov LH

MatrixOperator

General

This channel can perform equations or request info that has a matrix as output.

Children

  • Parameters - All Types Channel

This are the parameters for the equation. The order is from left to right. It does not matter in which order you mix the types so value, vector is the same as vector, value

Description

With this channel you can create reflections, do parenting by hand, extract rotation from a matrix, get the current camera, invert a matrix, get the current world, etc...

IdentityMatrix

This is a matrix that does nothing. It has a position of (0,0,0), no rotation and a size of 1 in all directions.

Multiply Two Matrices

If you multiply a rotation matrix by a size matrix you will get a matrix that does both. Multiplying a matrix with a Identity matrix will result in the same matrix. The order in which you multiply the matrices is important because first a rotation and then a translation is not the same as a translation and then a rotation.

Matrix Inverse

If you multiply a matrix with the inverse of that matrix you will get the identity matrix. So if you have a matrix that moves (0,-1,6) the inverse matrix will move (0,2,-6).

Get Movement Matrix from Matrix

Strips the rotation and scaling from a matrix.

Get Rotation Matrix from Matrix

Strips the translation and scaling from a matrix.

Get Current View Matrix

This operator retrieves the current view Matrix

Get current Camera Matrix

Gets the current camera matrix. The camera matrix is the inverse of the matrix you link to a camera so to get the motion of a camera you have to inverse this matrix.

OrthoLH with Zoom

Creates a left handed orthographic projection matrix with the zoom factor.

Create Look at Matrix

Create a rotation matrix that makes vector1 look at vector 2

Reflect matrix in xy

Creates a matrix that reflects matrices along the XY plane of the specified matrix. To use it you can create this matrix and then multiply this matrix with the matrix you wants to reflect.

Shadow Matrix in XY

Creates a matrix that flattens an object into the XY plane of the specified matrix as if a shadow was cast from a light source. The vector specifies the position of the light.

Transpose Matrix

The columns of the matrix become rows and the rows become columns.

Get Current Projection Matrix

Gets the current projection matrix

Get Current World Matrix

Get the current world matrix.

Create Sizing matrix

Creates a sizing matrix with the specified vector.

Create Rotation Matrix

Creates a rotation matrix using the specified vector. The x, y and z components of the vector specify the Heading, Pitch and Banking of the rotation.

Create Rotation Matrix from direction

Creates a rotation by using the vector as the 'look at' direction and the value as the banking.

Create Translations Matrix

Creates a matrix that translates by the values specified in the vector.

Get Sizing Matrix from Matrix

Strips the rotation and translation of a matrix

Convert to 3x3 Texture Matrix(matrix)

Linking a normal matrix (motion) to an ObjectData will not include the the position changes for the texture. Converting it to a 3x3 Texture Matrix will include the position.

Create Matrix from vectors (vector 4x)

A 4x4 matrix is generated from 4 vectors. The first is the translation. Seconc X Axis. Thirth Y Axis. Fourth Z Axis.

Get Bone Matrix (Skinnged Character, value (boneNr))

To be able to parent objects to a skinned character you need the total bone transformation. Link a Skinned Character channel and a value channel to get bone matrix. The value is used to determine from which bone you with to get the matrix. In the interface of Skinned Character bone numbers with the name can be found.

Create matrix from position and normal (vector 2x)

Create a matrix from a position and a normal vector.

Matrix Damping (matrix, value)

Dampen a complete matrix. Uses quaternions to correctly interpolate the rotation. Make sure the matrix is orthogonal (no matrix sharing) for this operator to work correctly.

ODE Matrix Damping (matrix, value)

Dampen a complete matrix. Uses quaternions to correctly interpolate the rotation. Make sure the matrix is orthogonal (no matrix sharing) for this operator to work correctly. This version compensates for ODE skipping rendering frames to avoid strange behaviour. Use this when damping an ODE body.

Matrix Interpolate (matrix, matrix, value)

Interpolate between two matrixes. Uses quaternions to correctly interpolate the rotation. Make sure the matrix is orthogonal (no matrix sharing) for this operator to work correctly.

Get matrix from objectdata (3d objectdata)

A 3d object data holds its current matrix. This function retrieves this matrix. This is needed for example with nature paint items to use skinning with each rendered item. The nature paint will set the correct matrix in the skinning objectdata channel. It on its turn uses this matrix as a parent for the root bone.

Create projection matrix for large view

With this operator you can create a projection matrix that renders a small portion of your view. You can then render this portion to a file on your drive and weld each small portion together to be able to render images with infinite size not limited to your video card memory (4000x4000 pictiures)

Children

  1. Near clipping plane (default 0.4)
  2. Far clipping plane (default 4000)
  3. Zoom factor (default 1)
  4. Number of images to create (like 4, 9, 16)
  5. Current image to render

Just increate value 5 for each rendered frame to create your set of small images. You will need to use an external program like photoshop to create one big image of the created small ones.

Matrix Perspective Fov LH

This operator build a left-handed perspective projection matrix based on a field of view.

Children

  1. Near Clipping
  2. Far Clipping
  3. field of view in radiens

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Operators


MediaTexture - Quest3D

MediaTexture

Contents

  • 1 MediaTexture
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Source Type
      • 1.3.2 Movie File- and Movie From Internet Address Properties
      • 1.3.3 Capture Device Properties
    • 1.4 Call Channel
  • 2 See Also

MediaTexture

General

Texture that is applied onto a 3d object. The appearance of the texture depends on the type of media (media file, capture device or remote media file) associated with it.

Children

none

Description

The Media Texture channel streams data from (remote) media file or capture device and transforms this into a Texture and (if the stream contains audio data) sound.

Source Type

Defines the type of media-source that is used by the channel. Possible choices are:

  • Movie File - A movie file is simply a file containing video (and possibly audio) data. This channel supports most popular video formats like AVI, MPEG, WMV and DIVX provided the necessary codecs are installed.
  • Capture Device - A capture device is a device that is able to transform real-life (analog) video- and/ or audio information into CPU-friendly digital data. Examples of capture devices are digital camera’s, webcams and TV-tuners.
  • Movie From Internet Address - Same as Movie File except the media is loaded from an Internet address.

The properties that appears depend on the selected source type.

Movie File- and Movie From Internet Address Properties

The picture above shows the dialog that appears when you choose Movie File or Movie From Internet Address as a sourcetype.

  • Load From Movie File - Press the button to load a new movie fragment. After you have loaded a new movie file, the filename will appear on the button (like in this case “butterfly.mpg”). Note that this button is disabled if Movie File isn't the selected source type
  • Load From (Internet) Address - Specify the (Internet) address of your movie sample here. This can be an HTTP address like for example http::/www.quest3d.com/mymovie.mpeg. But it can also be a local path like C:\movies\mymovie.mpeg. Note that the textfield is disabled if Movie From Internet Address isn't the selected source type
  • Duration - This value states the length of the movie fragment in milliseconds.
  • Rate - This value defines the rate at which the sample will be played. Changing this value to - for example- 2.0 results in a playback at twice the normal speed.
  • Start Time - This value defines the position in time from where the playback will start when the channel is activated.
  • End Time - This value defines the position in time at which the channel will rewind the playback. Playback will continue from the position defined at Start Time.
  • Looping - Set this option if you want the playback to loop when it has reached the end of the movie fragment
  • Exclude Movie from file when saving - Set this option to prevent the movie file from being included in the to-be-published CGR. It is advised to set this option when the size of the movie fragment exceeds 10 MB. Note that by setting this option the movie file will be referenced by its path. This option has no effect if the source type is Movie From Internet Address

Capture Device Properties

The picture above shows the dialog that appears when you choose Capture Device as a sourcetype.

  • Select Capture Device - From the capture device list select the capture device that you want as a source for the texture.
  • Refresh List - Press this button to refresh the capture devices list.
  • Select - Press this button after you’ve selected a capture device from the list. The selected capture device will now become the source from which video/ audio data is streamed.

Call Channel

Calling this channel has no effect, use the channel as a Texture.

See Also

MediaTexture Command, MediaTexture Info Text, MediaTexture Info Value

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing


MediaTexture Command - Quest3D

MediaTexture Command

Contents

  • 1 MediaTexture Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Play
      • 1.3.2 Pause
      • 1.3.3 Stop
      • 1.3.4 Rewind
      • 1.3.5 Seek
      • 1.3.6 Set Playback Rate
      • 1.3.7 Set Start Time
      • 1.3.8 Set End Time
      • 1.3.9 Play Media From File
      • 1.3.10 Play Media From Capture Device
      • 1.3.11 Play Media From (Internet Address)
      • 1.3.12 Set Looping Enabled
    • 1.4 Call Channel
    • 1.5 See Also

MediaTexture Command

General

Use this channel to command a MediaTexture channel. Commands vary from starting the playback to setting the playback rate.

Children

  1. Media Texture - MediaTexture
    • Media Texture channel to obtain value- information from.
  2. Setting specific - All Types Channel
    • Specific to the selected command

Description

The channel can be configured through the channel properties dialog. In this dialog you are able to select the action.

The following commands can be issued:

Play

Start the playback of the media.

Pause

Pause the playback of the media.

Stop

Stop the playback of the media

Rewind

Rewind the playback of the media

Seek

Seek within the stream. Link a Value channel to set the position to seek for (jump to). Defined in milliseconds

Set Playback Rate

Set the playback rate. Link a Value channel to set as rate. A value of 2.0 indicates a playback of twice the normal speed

Set Start Time

Set the time within the movie from which the playback will start. Link a Value channel to set as start time. Defined in milliseconds.

Set End Time

Set the time within the movie at which the playback will stop. Link a Value channel to set as end time. Defined in milliseconds

Play Media From File

Start playback of a media file. Link a Text channel to set as file path.

Play Media From Capture Device

Play a stream from a capture device. Link a Value channel to set as the index of the capture device that should be the source of the streaming.

Play Media From (Internet Address)

Play media from a remote file. This can be an HTTP address like for example http::/www.quest3d.com/mymovie.mpeg. But it can also be a local path like C:\movies\mymovie.mpeg. Link a Text channel to specify the Internet address of the remote media file.

Set Looping Enabled

Enables or disables playback looping. Link a Value channel to specify if looping should be disabled (value= 0) or enabled (value= 1).

Call Channel

When called this channel will execute the configured command.

See Also

MediaTexture, MediaTexture Info Text, MediaTexture Info Value

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


MediaTexture Info Text - Quest3D

MediaTexture Info Text

Contents

  • 1 MediaTexture Info Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Media FileName
      • 1.3.2 Capture Device Name
      • 1.3.3 Media Internet Address
  • 2 Chall Channel
  • 3 See Also

MediaTexture Info Text

General

This channel is used to obtain textual information from a MediaTexture channel

Children

  1. Media Texture - MediaTexture
    • Media Texture channel to obtain value- information from
  2. Capture Device Index - Value
    • Index in the capture devices list enumerated by the Media Channel

Description

Using this channel it is possible to obtain specific textual- information from a DMediaTexture channel.

The following information can be retrieved:

Media FileName

Path of the media file.

Capture Device Name

Name of the capture device at index Capture Device Index (see second child link position)

Media Internet Address

Internet address of the media file.

Chall Channel

Calling this channel has no effect.

See Also

MediaTexture, MediaTexture Command, MediaTexture Info Value

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


MediaTexture Info Value - Quest3D

MediaTexture Info Value

Contents

  • 1 MediaTexture Info Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Duration
      • 1.3.2 Rate
      • 1.3.3 Start Time
      • 1.3.4 End Time
      • 1.3.5 Current Position
      • 1.3.6 Playback Status
      • 1.3.7 Number of Capture Devices
      • 1.3.8 Looping Enabled
    • 1.4 Update Channel Name
    • 1.5 Call Channel
  • 2 See Also

MediaTexture Info Value

General

This channel is used to obtain value- information from a MediaTexture channel.

Children

  1. Media Texture - MediaTexture
    • Media Texture channel to obtain value- information from.

Description

Using this channel it is possible to obtain specific value- information from a MediaTexture channel.

The following information can be retrieved:

Duration

Duration of the movie fragment. This value does not regard the playback rate. So if a movie takes - for example- 7000 milliseconds to complete, increasing the playback rate to 2.0 will have no effect on the duration. It will remain 7000 milliseconds.

Rate

Rate at which the fragment is played back. A value of – for example- 2.0 indicates a playback speed that is two times faster than normal.

Start Time

Time within the movie from which the playback starts. Defined in milliseconds.

End Time

Time within the movie at which the playback stops and rewinds to Start Time. Defined in milliseconds.

Current Position

Current playback position in time. Defined in milliseconds.

Playback Status

Current status of the playback. Possible values are 0, implying a Play state, 1, implying Pause state and 2, implying a Stop state.

Number of Capture Devices

Number of capture devices that have been found on this system. You can use the MediaTexture Info Text to retrieve the names of the devices.

Looping Enabled

Defines whether the playback will loop when it has reached the end of the playback or not. Possible values are 0 (looping is disabled) or 1 (looping is enabled). MediaTexture Info Text to retrieve the names of the devices.

Update Channel Name

Set this option to reflect the channel’s action to its name within the Channels Section.

Call Channel

Will have no effect. Use this channel as a Value channel to retrieve the information.

See Also

MediaTexture, MediaTexture Command, MediaTexture Info Text

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


Reference Manual/Editor/General/Message Log - Quest3D

Reference Manual/Editor/General/Message Log

< Reference Manual | Editor | General
Jump to: navigation, search

Message Log

This window shows messages that might be important for the user, or give more information on a taken action. This window is placed on the bottom of every section in Quest3D.

There are three different types of messages:

  • Information - These messages give more information on a given action. The action was probably succesful, but some changes might be needed. We recommend you read the given information.
  • Warning - A warning message will tell the user that something went partially wrong, or something was not processed correctly.
  • Error - The action taken was not processed and the error report shows what went wrong.

A new message will overwrite the previous shown message and when a message contains multiple lines, or does not fit in the window you press the Log button at the right of the message log bar, this will show the User Message Log dialog where you can scroll through the messages. Select a message in the history to get the full description.

One Level Up General

Back to Editor

Back to Main Index

Category: Editor


SDK/Quest3D Core Engine/MessageInfo - Quest3D

SDK/Quest3D Core Engine/MessageInfo

< SDK | Quest3D Core Engine(Redirected from MessageInfo)
Jump to: navigation, search

Struct definition

struct MessageInfo { UINT messageId; DWORD wparam; DWORD lparam; };

Description

When the event system is used and a Window message is received a pointer to this struct is used in the second parameter of the DoEvent function of a channel.

Struct Members

Name | Description
messageId | The actual message value of a Window message. See the Win32 documentation for more information.
wparam | A DWORD holding the wparam value of the received Windows message. See the Win32 documentation for more information.
lparam | A DWORD holding the lparam value of the received Windows message. See the Win32 documentation for more information.

Related documentation

AddChannelToEvent, RemoveChannelFromEvent, DoEvent

One Level Up - Quest3D Core Engine

Back to Main Index


SDK/Quest3D Core Engine/MessageInfo - Quest3D

SDK/Quest3D Core Engine/MessageInfo

< SDK | Quest3D Core Engine
Jump to: navigation, search

Struct definition

struct MessageInfo { UINT messageId; DWORD wparam; DWORD lparam; };

Description

When the event system is used and a Window message is received a pointer to this struct is used in the second parameter of the DoEvent function of a channel.

Struct Members

Name | Description
messageId | The actual message value of a Window message. See the Win32 documentation for more information.
wparam | A DWORD holding the wparam value of the received Windows message. See the Win32 documentation for more information.
lparam | A DWORD holding the lparam value of the received Windows message. See the Win32 documentation for more information.

Related documentation

AddChannelToEvent, RemoveChannelFromEvent, DoEvent

One Level Up - Quest3D Core Engine

Back to Main Index


MIDI Player Command - Quest3D

MIDI Player Command

(Redirected from MIDI File Command)
Jump to: navigation, search

Contents

  • 1 MIDI File Command
    • 1.1 General
    • 1.2 Developer
    • 1.3 Children
      • 1.3.1 Description
      • 1.3.2 Commands:
      • 1.3.3 Sending info (Values):
      • 1.3.4 Receiving info (Values):
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

MIDI File Command

General

Controls the properties of a midi song loaded with the Midi File Player.

Developer

This channel and documentation is created by Loic du Montaignac and is released for all users for Quest3D. For more information on this channel you can contact him on our forums or through loic@montaignac.com.

Children

  1. MIDI File - Midi File Player
    • Connect a Midi_File Channel to hold your midi song data.
  2. MIDI Player Values - Value
    • Connect a value channel to receive/send info from/to your midi song.

Description

Commands:

  • Play / Continue - Start playback of the midi song. This command can also be used to continue playing a song after being paused. Reusing this command while a song is playing will have no effects.
  • Pause / Continue - Toggle. Pause or continue the playback of the midi song.
  • Stop - Rewind & Stop playback of the midi song.

Sending info (Values):

  • Set Volume - Change the master volume of your midi song.
    • The range is from 0 to 1.
  • Set Tempo - Change the master tempo of your midi song. The range is from 0.25 to 2 (From a quarter of the speed to double speed).
  • Set Position - Jump to any position of your midi song. The value must be given in Music Time Ticks *.
  • Set Repeat ON/OFF - Toggle. Enable/Disable the repeat mode of the song. (Changing the repeat mode while playing a song will not take effect until you reissue a "Play" command) .Possible values are: 0 = repeat disabled, 1= repeat enabled.
  • Set Number of Repeats - Will set the number of times + 1 the midi song will be repeated. (Changing the number of repeats while playing a song will not take effect until you reissue a "Play" command). Value = 0 -> infinite repeat.

Receiving info (Values):

  • Get Length - Get the total length of your midi song. The result is a value in Music Time Ticks *
  • Get Position - Current playback position of your midi song. The value is in Music Time Ticks*. Be aware that the precision is not 100% accurate due to rounding error & possibly latency but should be sufficient for most applications.
  • Get Repeat ON/OFF - Tells you if the repeat mode is enabled or disabled. 0 = Repeat disabled, 1= Repeat enabled.
  • Get Number of Repeats - Will get the number of times the midi song will be repeated. Value = 0 -> infinite repeat. Be aware that if the value returned is for example 2, the song will be played 3 times.
  • Get Playback Status - Put the state of the midi song playback in the linked "Value" channel. Returned values are: 0 for "Stop", 1 for "Play", 2 for "Pause"

Music Time Ticks are issued 768 times per quarter notes

CallChannel

When called this channel will execute the chosen commands. Beware that commands will be issued for each tree loop (frame) if connected directly to a ChannelCaller without any intermediary logic. As an example, if you are using this channel to send a "Play" command to the midi song channel and you connect it directly to a ChannelCaller without any intermediary logic, the "Play" command will be sent every frame.

Applications

More than one midi file channel can now be used and controlled independently from each other or in relation to each other. (Be aware that, depending on your hardware, playing simultaneously multiple instances of big multi-track midi songs can/will have some impact on your frame rate...)

Tips

Have a look at the included example to see how by using the "Get Position" command you can extract:

  • Measures
  • Quarter Notes
  • "Pseudo" Midi Ticks (24 times / quarter notes)

Great for synchronizing anything on the tempo.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | UserInput


MIDI Player - Quest3D

MIDI Player

(Redirected from Midi File Player)
Jump to: navigation, search

Contents

  • 1 Midi File Player
    • 1.1 General
    • 1.2 Children
    • 1.3 Developer
    • 1.4 Description
    • 1.5 CallChannel
    • 1.6 Applications

Midi File Player

General

Load a Midi file, preview it and set its default properties

Children

none

Developer

This channel and documentation is created by Loic du Montaignac and is released for all users for Quest3D. For more information on this channel you can contact him on our forums or through loic@montaignac.com.

Description

With this channel you can load a midi file from disk and use the MIDI File Command channel to send commands as well as getting / setting its properties.

In the properties dialog (pict above), use the "Load File" button to select your midi file from disk. As soon as the file is loaded, all grayed options will become available to you, the duration of the song will also appear in Music Time Ticks. A Music Time Tick is issued 768 times per quarter note, this means that any timing values are always calculated relative to the original tempo of the song. This is also true when tempo is changed via the Midi Control Channel.

Use the Play, Pause or Stop buttons to listen to the loaded song. (Clicking Stop will rewind the song automatically) If the dialog is closed while the song is playing, it will conveniently be stopped & rewound for you. Again for convenience, this is true only when the Play command is issued from this dialog.

Clicking on the Repeat checkbox will put the channel in repeat mode. When played, your song will repeat itself to the number of times + 1 appearing in the Loop # field - default 1. Use the value 0 to repeat it indefinitely. (changing the repeat mode or the number of repeats while playing a song will not take effect until you next play the song).

CallChannel

Calling this channel will have no effects (except for filling your "Message" window with loads of blue Debug messages - just click on the "D" button to prevent these messages appearing)

Applications

More than one midi file channel can now be used and controlled independently from each other or in relation to each other. (Be aware that, depending on your hardware, playing simultaneously multiple instances of big multi-track midi songs can/will have some impact on your frame rate...)

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound


MIDI Player - Quest3D

MIDI Player

Contents

  • 1 Midi File Player
    • 1.1 General
    • 1.2 Children
    • 1.3 Developer
    • 1.4 Description
    • 1.5 CallChannel
    • 1.6 Applications

Midi File Player

General

Load a Midi file, preview it and set its default properties

Children

none

Developer

This channel and documentation is created by Loic du Montaignac and is released for all users for Quest3D. For more information on this channel you can contact him on our forums or through loic@montaignac.com.

Description

With this channel you can load a midi file from disk and use the MIDI File Command channel to send commands as well as getting / setting its properties.

In the properties dialog (pict above), use the "Load File" button to select your midi file from disk. As soon as the file is loaded, all grayed options will become available to you, the duration of the song will also appear in Music Time Ticks. A Music Time Tick is issued 768 times per quarter note, this means that any timing values are always calculated relative to the original tempo of the song. This is also true when tempo is changed via the Midi Control Channel.

Use the Play, Pause or Stop buttons to listen to the loaded song. (Clicking Stop will rewind the song automatically) If the dialog is closed while the song is playing, it will conveniently be stopped & rewound for you. Again for convenience, this is true only when the Play command is issued from this dialog.

Clicking on the Repeat checkbox will put the channel in repeat mode. When played, your song will repeat itself to the number of times + 1 appearing in the Loop # field - default 1. Use the value 0 to repeat it indefinitely. (changing the repeat mode or the number of repeats while playing a song will not take effect until you next play the song).

CallChannel

Calling this channel will have no effects (except for filling your "Message" window with loads of blue Debug messages - just click on the "D" button to prevent these messages appearing)

Applications

More than one midi file channel can now be used and controlled independently from each other or in relation to each other. (Be aware that, depending on your hardware, playing simultaneously multiple instances of big multi-track midi songs can/will have some impact on your frame rate...)

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound


MIDI Player Command - Quest3D

MIDI Player Command

Contents

  • 1 MIDI File Command
    • 1.1 General
    • 1.2 Developer
    • 1.3 Children
      • 1.3.1 Description
      • 1.3.2 Commands:
      • 1.3.3 Sending info (Values):
      • 1.3.4 Receiving info (Values):
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

MIDI File Command

General

Controls the properties of a midi song loaded with the Midi File Player.

Developer

This channel and documentation is created by Loic du Montaignac and is released for all users for Quest3D. For more information on this channel you can contact him on our forums or through loic@montaignac.com.

Children

  1. MIDI File - Midi File Player
    • Connect a Midi_File Channel to hold your midi song data.
  2. MIDI Player Values - Value
    • Connect a value channel to receive/send info from/to your midi song.

Description

Commands:

  • Play / Continue - Start playback of the midi song. This command can also be used to continue playing a song after being paused. Reusing this command while a song is playing will have no effects.
  • Pause / Continue - Toggle. Pause or continue the playback of the midi song.
  • Stop - Rewind & Stop playback of the midi song.

Sending info (Values):

  • Set Volume - Change the master volume of your midi song.
    • The range is from 0 to 1.
  • Set Tempo - Change the master tempo of your midi song. The range is from 0.25 to 2 (From a quarter of the speed to double speed).
  • Set Position - Jump to any position of your midi song. The value must be given in Music Time Ticks *.
  • Set Repeat ON/OFF - Toggle. Enable/Disable the repeat mode of the song. (Changing the repeat mode while playing a song will not take effect until you reissue a "Play" command) .Possible values are: 0 = repeat disabled, 1= repeat enabled.
  • Set Number of Repeats - Will set the number of times + 1 the midi song will be repeated. (Changing the number of repeats while playing a song will not take effect until you reissue a "Play" command). Value = 0 -> infinite repeat.

Receiving info (Values):

  • Get Length - Get the total length of your midi song. The result is a value in Music Time Ticks *
  • Get Position - Current playback position of your midi song. The value is in Music Time Ticks*. Be aware that the precision is not 100% accurate due to rounding error & possibly latency but should be sufficient for most applications.
  • Get Repeat ON/OFF - Tells you if the repeat mode is enabled or disabled. 0 = Repeat disabled, 1= Repeat enabled.
  • Get Number of Repeats - Will get the number of times the midi song will be repeated. Value = 0 -> infinite repeat. Be aware that if the value returned is for example 2, the song will be played 3 times.
  • Get Playback Status - Put the state of the midi song playback in the linked "Value" channel. Returned values are: 0 for "Stop", 1 for "Play", 2 for "Pause"

Music Time Ticks are issued 768 times per quarter notes

CallChannel

When called this channel will execute the chosen commands. Beware that commands will be issued for each tree loop (frame) if connected directly to a ChannelCaller without any intermediary logic. As an example, if you are using this channel to send a "Play" command to the midi song channel and you connect it directly to a ChannelCaller without any intermediary logic, the "Play" command will be sent every frame.

Applications

More than one midi file channel can now be used and controlled independently from each other or in relation to each other. (Be aware that, depending on your hardware, playing simultaneously multiple instances of big multi-track midi songs can/will have some impact on your frame rate...)

Tips

Have a look at the included example to see how by using the "Get Position" command you can extract:

  • Measures
  • Quarter Notes
  • "Pseudo" Midi Ticks (24 times / quarter notes)

Great for synchronizing anything on the tempo.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | UserInput


Minuteman Command - Quest3D

Minuteman Command

Contents

  • 1 Minuteman Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Start Minuteman
      • 1.5.2 Stop Minuteman
      • 1.5.3 Get connection status
      • 1.5.4 Get rotation vector
  • 2 Templates
  • 3 Example
  • 4 External links

Minuteman Command

Children

  1. All Types Channel – Depends on the selected command.

Description

This Channel is used to interact with the Polhemus Minuteman motion tracker.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the combobox in the Minuteman Command channel interface

Change Channel name to command type

When a command is selected, the channel name will be set to the name of the command.

Command to Execute

This selects the command type to execute when the channel is called. Then next paragraph will describe the possible commands.

Commands

Start Minuteman

This command starts receiving data from a connected Minuteman device.

Stop Minuteman

This command stops receiving data from a connected Minuteman device

Get connection status

Determines whether the connection has been established and the engine is receiving data from the Minuteman device.

Children

  1. Value - This channel contains the connection status. (1=connected, 0=disconnected).

Get rotation vector

This command stores the rotation of a sensor in vectors.

Children

  1. Value - The number of the sensor to receive the rotation from.
  2. Value Vector - Vector in which the rotation of the sensor will be stored.

Templates

Templates for all commands can be found in the 'Templates' Tab in the Channel section under 10 - VR Edition -> Trackers -> Minuteman

Example

An example can be found in <YourQuest3DFolder>/Examples/VR/Polhemus Minuteman.cgr

External links

  • Minuteman motion tracker on the Polhemus website

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR | New in version 3.6


MMsg - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

MMsg

From Quest3D

Jump to: navigation, search

Function definition

void MMsg(const char * text);

or

void MMsg(const char * text1, const char* text2);

or

void MMsg(const char * text, int intValue);

or

void MMsg(const char * text, float floatValue);

or

void MMsg(int intValue);

or

void MMsg(DWORD dwValue);

or

void MMsg(float floatValue);

or

void MMsg(double doubleValue);

or

void MMsg(GUID guid);

Description

Display a pop up message box with debug information and wait for the user to press the OK button.

Parameters

Name | Description
text, text1, text2 | Constant NULL terminated string to debug
intValue | Integer value to debug
floatValue | Floating point value to debug
dwValue | DWORD variable that holds the value to debug
doubleValue | A double variable that holds the value to debug
guid | A GUID that is converted into a readable format for debug

Remarks

You are able to use any of the following functions. If you need to debug a different variable please type-cast it.

Make sure you do not keep calling this function because you might have trouble stopping your project if you keep showing message boxes. The application will wait until the user will click on the "OK" button of the message box shown.

You are able to use this function through the global defined mMsg (note the first character is a lower case character in stead of the upper case) so you will not need to use the full notation.

Example

Here a floating pointer value is debugged twice using both notations in a overloaded CallChannel function.

void Aco_Example3::CallChannel() {
    float floatValue = 1.345f;
    engine->MMsg("Value: ", floatValue);
    mMsg("Value: ", floatValue);
}

Related Documentation

DB, iMsg, dMsg, eMsg, Debugging

One Level Up - EngineInterface

Back to Main Index


Mode Buttons - Quest3D

Mode Buttons

Contents

  • 1 Mode Buttons
    • 1.1 Run Mode
    • 1.2 Edit Mode
    • 1.3 Run-Edit Mode

Mode Buttons

Run Mode

When Run mode is enabled, the project will run and receive all user input. You are NOT able to use function in the editor like copy/paste or delete channels and shortcut keys are not captured. The channel graph background color will be gray in the run mode.

Edit Mode

When edit mode is enabled, the project does not receive any user input. You are able to use all function in the editor and all shortcut keys are captured.

Run-Edit Mode

When Run-Edit mode is enabled, the project will run and receive all user input. You are able to use all function in the editor and all shortcut keys are captured.

One Level Up General

Back to - Editor

Back to Main Index


MorphObject - Quest3D

MorphObject

Contents

  • 1 MorphObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

MorphObject

General

Morph from a source object to multiple morph targets.

Children

  1. Source Objectdata - 3D ObjectData
    • Source shape of the object.
  2. Morph Targets - 3D ObjectData
    • Different morph targets.
  3. Morph percentage - Value
    • What is the influence of each morph target.

Description

When initializing the Morph object computes the difference of each of the morph targets to the original object. This difference is stored and when the object is drawn the final object is calculated. Only the vertexes that are different for each morph target are computed. The values that can be linked determine how the morph target is used.

The values correspond to the way the morph targets are linked. For example morph target number 4 will look at the 4th linked value to determine how it is influenced. The value is not limited so a value of minus 1 will create an effect of taking out the vertexes that are different in the morph target. Morph targets also complement eachother so if a vertex is shared by a morph target both will change that vertex.

The morph targets need to have the same vertex count as the source objectdata.

The childeren are checked to be changed to see if the Morph channel needs to re-initialize its morph data. DO NOT use a channelswitch to switch moprh targets since that will re-initialize the data each frame which is really slow!

CallChannel

This will render the objectdata. The prefered method is using a Surface channel.

Remarks

This channel has many uses. From walking characters to blinking an eye to changing a mouth. You can use envelopes as childeren for an easy method of determening from a single value which morph target is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Animation


Motion - Quest3D

Motion

Contents

  • 1 Motion
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

Motion

General

An orientation for objects constructed out of a rotation, position and scale.

Children

  1. Position Vector - Value Vector
    • A Value Vector that defines the position.
  2. Rotation Vector - Value Vector
    • A Value Vector that defines the Euler rotation angles.
  3. Size Vector - Value Vector
    • A Value Vector that defines the scaling in each direction.
  4. Look At Matrix - Matrix
    • A Matrix that serves as a 'target' for the motion. The motion will automatically calculate its heading and pitch angles.
  5. Parent Matrix - Matrix
    • A Matrix parent for this motion. A motion inherits the transformation of its parent.

Description

This channel can be used by any channel that accepts a Matrix. A matrix represents a the location of an object, light, camera, etc.. The Motion constructs the matrix out of 9 values. Very often these values are Envelope the object using the motion can be animated. The easiest way for animating the Motion you can find in the animation section (see: Animation Section).

The first child is a vector that describes the position of the motion. These are simple x,y and z values describing the 3D position of the motion. The second child is a vector that describes the rotation of the object. The rotation must be specified in Euler angles. There are 3 angles: Heading, pitch and bank. To understand how these angles influence a rotation you can compare the angles the rotation of an aircraft. The banking angle always rotates the aircraft along the length axis of the aircraft. The heading angle always makes the aircraft rotate along the y-axis and the pitch angle rotates the aircraft so it flies up or down.

How Euler angles rotate an object.

These Euler angles are sometimes called yaw, pitch and roll. If you want to enter the values in degrees use the animation section (Animation Section).

The third child is a vector that specifies the scaling in each direction for the motion. By default this value is 1 for all directions.

When you link another Matrix to the third child link position the heading and pitch rotations are calculated in such way that the motion always 'looks' at the child with its z-axis. If you make a motion look at a matrix you can still bank the motion.

The last link position allows for hierarchical animation. You can link a 'parent' of the motion at this link position. The motion will then 'inherit' the motion of the parent. An example of this is a hand that is parented to the forearm. When you rotate the forearm the hand moves along.

CallChannel

Calling this channel has no effect.

Applications

A motion is an animated matrix. A matrix is used for positioning lights, cameras, objects etc..

Tips

Sometimes you need a motion without an object, light or camera. In this case there is no way to edit the motion in the animation section of the editor. You can solve this by creating a 'dummy' object. A dummy object is often called a 'NULL object'. A NULL object is an object with a motion connected to it. A NULL object has no surfaces, materials or mesh.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables | Animation


Reference Manual/Editor/Animation Section/Motion Values - Quest3D

Reference Manual/Editor/Animation Section/Motion Values

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Motion Values
    • 1.1 General
    • 1.2 Moving
    • 1.3 Rotating
    • 1.4 Sizing
    • 1.5 Other Toolbar Buttons
    • 1.6 Parenting and Look-at

Motion Values

General

Motion Values Interface with toolbar

With the motion values window you can see and edit the values of the motion. You can move, rotate, scale or reset motions by using toolbar buttons.

If you are editing a motion the value edit boxes of this window are enabled otherwise they are disabled. If a motion does not have a Value channel for one of the values the box for that single value edit box is disabled. You can lock a value by clicking the lock icon next to a value box.

Moving

You can move a key if the "Move" toolbar button is selected (as in the picture). You can move the key in the XZ plane by moving left-right, up-down with the mouse while pressing the left mouse button. Make sure the mouse pointer is inside the 3D View window when you press your mouse button. You can move a key up by moving the mouse up or down while you are pressing the right mouse button.

When a motion has a parent that has an awkward orientation it may be very hard to move a key. This is because the moving the key is relative to the orientation of the parent of the motion. To use the normal method for moving keys you can toggle the ‘World coordinates’ switch in the toolbar below the values.

Rotating

To rotate a key you need to make sure the "Rotate" button is selected. Rotation works about the same as moving your object. With the left mouse you alter the heading and pitch and with the right mouse you alter the banking of your key. The world/local coordinates toggle has no effect on rotating your object. The values are shown in degrees while internally the angles are in radians. In the motion value boxes you can fill in all angles in degrees. The actual key value is converted to radians automatically. If you want a motion to point at another motion you can read on about parents and the look-at target.

Sizing

To scale a key you need to make sure the "Scale" button is toggled. Sizing works somewhat different then moving and rotating. You can scale all directions at once or you can scale one ore more separate axes by locking the axes you do not want to scale. You can size keys by moving the mouse from left-right while holding the left mouse button. Sizing works relative to the size of the object. This means that you cannot scale a key in the direction that has a size of 0. The world/local coordinates toggle does not affect sizing.

Other Toolbar Buttons

There is a toolbar button that you can use to set all motion values to their default values. A new key is created as soon as you change a value at a position where no key is present yet.

There are also two toolbar buttons that allow you to scale the world size up and down. This is very useful when you are moving a object over a large distance, or want to place a small object very accurate.

Parenting and Look-at

A motion that looks at another motion and is parented to that motion

You can make a motion point towards another motion by linking a motion to its ‘look at’ link position. You can attach a motion to another motion by attaching the ‘parent’ motion to the ‘parent’ link position of the Motion channel. In the picture above motion1 is both looking at and parented to motion2. This is useful if you are animating a character for example. Imagine you use the ‘forearm’ as a parent for the ‘hand’. The hand is attached to the forearm so it moves along as you rotate the forearm. If you want to edit a motion but there is no object to select you’ll have to create a dummy object. This is often called a ‘NULL’ object. A NULL object has no children except for the motion. There is a NULL object template available.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


MotionPlanning - Quest3D

MotionPlanning

Contents

  • 1 MotionPlanning
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

MotionPlanning

General

Create an A* path trough your scene.

Children

  1. Original Position - Value Vector
    • When starting a calculation items start position and position of current item
  2. Destination Position - Value Vector
    • Position to plan a path to
  3. Next Node Range - Value
    • Range from target to to switch to new target
  4. 3D Graph - 3D Graph
    • 3D Graph to use for planning

Description

This channel is able to plan a A* path trough your scenes. These paths must be pre drawn using the 3D Graph channel. This channel will find the shortest path trough the graph from start to destination. If when starting a new calculation a direct path to the target is possible this path will be taken. If a direct path is possible is determined by looking at the collision objects of the 3D Graph channel that are linked to the second child links of the 3D Graph command. You can disable this direct path planning in the interface.

You can set the next node range also in the interface if you do not link the child. The reject direct path at height difference allows you to make sure your object is not going to try to fly trough the air if a direct path is visible from for example the ground and top of a building.

The MotionPlanning channel itself is a 3D Vector. When a path is calculated it will itself be the next target node. You should use this value to determine how to move the source. You can for example do a demping on the MotionPlanning but using the AI templates makes this easier. Once the original position comes closer to the current target then the node range the MotionPlanning channel will update its target to the new target untill the destination is reached.

Please make sure that the next node range is not to small (really close to 0) since that might produce strange errors of stuck objects.

CallChannel

Calling this channel once will make it recalculate its path.

Applications

You can use this channel to plan a path trough your scene.

Tips

Do the AI tutorial and use the AI templates.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | A.I. | Animation


MotionPlanningInfoValue - Quest3D

MotionPlanningInfoValue

Contents

  • 1 MotionPlanningInfoValue
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Get if planning reached end node
      • 1.3.2 Get path length (vector, vector etc)
      • 1.3.3 Get current path node count
      • 1.3.4 Get closest path number
      • 1.3.5 Get current path lenght
      • 1.3.6 Get highest path weight
      • 1.3.7 Get total path weight
    • 1.4 CallChannel
    • 1.5 Applications

MotionPlanningInfoValue

General

Get information from a MotionPlanning channel.

Children

  1. Source - MotionPlanning
    • Source motionplanning channel
  2. Setting Specific - All Types Channel
    • Depends on the setting

Description

With this channel you are able to get specific information from a MotionPlanning channel.

Always link a MotionPlanning to this channel for it to work.

Get if planning reached end node

With this setting you can ask a MotionPlanning channel if it already reached the destination node.

Get path length (vector, vector etc)

Link vector channels to this channel to calculate the distance of the first and second vectors path plus the third and forth vector etc. This will allow you to determine the path lenght of a very complicated path to for example create a shortcut trough your level. You can link as many vector pairs to this channel as you want.

Get current path node count

Will retrieve the current number of items found in the current found path or 0 of no or a direct path is found.

Get closest path number

Link CollisionObject channels to this channel to get the closest path that has collision with the objects linked. This path nr can be used with 3D GraphCommand channel to set the weight of the graph paths dynamically.

Get current path lenght

With this setting you can ask a MotionPlanning what the length is of the path.

Get highest path weight

With this setting you can ask a MotionPlanning what the highest path weight is of the planned path.

Get total path weight

With this setting you can ask a MotionPlanning what the total path weight of the planned path.

CallChannel

Calling this channel will also do its calculations.

Applications

You can do a specific action when you reach the destination or create a portal system trough your scene.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | A.I.


MotionPlanningInfoVector - Quest3D

MotionPlanningInfoVector

Contents

  • 1 MotionPlanningInfoVector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Get position from node nr (value)
      • 1.3.2 Get position from found path nr (value)
    • 1.4 CallChannel
    • 1.5 Applications

MotionPlanningInfoVector

General

Get information from a MotionPlanning channel.

Children

  1. Source - MotionPlanning
    • Source motionplanning channel
  2. Value Channel - Value
    • Node to get position from

Description

With this channel you are able to get specific information from a MotionPlanning channel.

Get position from node nr (value)

Link a value channel to the MotionPlanningInfoVector and provide a NodeNr. This channel will then retrieve the position of the provided node.

Get position from found path nr (value)

Link a value channel to the MotionPlanningInfoVector and provide a nr from 0 to the number of items in the current found path which can be retrieved with the Value channel. This channel will then retrieve the position of the provided node.

CallChannel

Calling this channel will also do its calculations.

Applications

Position of nodes can be used to for example draw something at a node position.

Position of the current path can for example be used to draw the current found path.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | A.I.


MotionSet - Quest3D

MotionSet

Contents

  • 1 MotionSet
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

MotionSet

General

Used to group several motions into one channel.

Children

  1. Motion sets - Matrix
    • The seperate motions that are used to create a motion set.

Description

This channel is used by SkinnedCharacter to group motions together. These motions are then used as motions for the bones. This includes motions that are dummies and don't have an actual bone representing the motion.

This channel is created by the X importer and is of no use when it is created by the user manually.

When character data is imported you are able to configure the channel using the properties dialog:

CallChannel

Calling this channel has no effect

Remarks

This channel is used by the .X file importer and is of no use for users in the channel editor.

Applications

Objects with lots of motions that are hard to handle otherwise. By grouping all the motions into one set it is possible to interpolate the complete motion set instead of individual motions.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation


MotionSetBlender - Quest3D

MotionSetBlender

Contents

  • 1 MotionSetBlender
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

MotionSetBlender

General

Blend between two MotionSet channels.

Children

  1. First Set - MotionSet
    • MotionSet to blend to.
  2. Second Set - MotionSet
    • MotionSet to blend to
  3. Blend Value - Value
    • Range from 0..1
  4. Reference frame. - MotionSet
    • A reference frame compensates for positional errors during blending.

Description

The MotionSetBlender channel is able to blend between two MotionSet channels.

The value channel is used to determine the blend. The value ranges from 0.0 to 1.0.

Missing Documentation.
What does a reference frame do exactly?

CallChannel

No Effect

Applications

Usable to blend different motions of characters together. For example blend from walking to running.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Incomplete


MouseInsideViewRect - Quest3D

MouseInsideViewRect

Contents

  • 1 MouseInsideViewRect
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

MouseInsideViewRect

General

Is the mouse in the 3D window or not.

Children

  1. Present Channel - Present
    • Link the Present channel that is used to render the view to this channel. This channel will use the rectangles linked to that present to determine which rectangle to check.

Description

This channel checks if the mouse is inside the rectangle of the 3D view. The channel will set its value to 1 (true) if the mouse is inside the 3D view rectangle and 0 (false) otherwise.

CallChannel

Calling this channel has no effect.

Applications

Used to limit the application when the user has moved the mouse cursor outside the 3D view. In such a case the application can stop processing keyboard commands for example.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | UserInput


Mp3 Player - Quest3D

Mp3 Player

(Redirected from MP3 File)
Jump to: navigation, search

Contents

  • 1 MP3 File
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Tips

MP3 File

General

Load a MP3 file for usage with MP3PlayerControl

Children

  1. MP3 filename - Text
    • Filename to load when a MP3 file is played

Description

With this channel you can load a MP3 file from disk and use the MP3PlayerControl to control the MP3 file.

In the interface you can select a MP3 file from disk to load with the "Select File" button. With the "Save File in ChannelGroup" check box you select if you want the file to be stored as reference (the filename only) or as the MP3 data itself. When this check box is checked the entire MP3 file will be saved into the channelgroup the next time the channelgroup is saved. Please note that this increases the size of the channelgroup, but you will not need to distribute a MP3 file separately.

If you would like to select a MP3 file without the interface, you are able to link a Text child and give a full pathname. This file will be loaded as soon as the file is played. If you want to change the filename, use the "Stop" command and then "Play" again using the MP3PlayerControl channel.

CallChannel

Will have no effect

Tips

If you want to select a file in your project you can use a FileDialog to select a MP3 file and link it to this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound


Mp3 Player - Quest3D

Mp3 Player

Contents

  • 1 MP3 File
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Tips

MP3 File

General

Load a MP3 file for usage with MP3PlayerControl

Children

  1. MP3 filename - Text
    • Filename to load when a MP3 file is played

Description

With this channel you can load a MP3 file from disk and use the MP3PlayerControl to control the MP3 file.

In the interface you can select a MP3 file from disk to load with the "Select File" button. With the "Save File in ChannelGroup" check box you select if you want the file to be stored as reference (the filename only) or as the MP3 data itself. When this check box is checked the entire MP3 file will be saved into the channelgroup the next time the channelgroup is saved. Please note that this increases the size of the channelgroup, but you will not need to distribute a MP3 file separately.

If you would like to select a MP3 file without the interface, you are able to link a Text child and give a full pathname. This file will be loaded as soon as the file is played. If you want to change the filename, use the "Stop" command and then "Play" again using the MP3PlayerControl channel.

CallChannel

Will have no effect

Tips

If you want to select a file in your project you can use a FileDialog to select a MP3 file and link it to this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound


MP3 Player Command - Quest3D

MP3 Player Command

Contents

  • 1 MP3PlayerControl
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Control
      • 1.3.2 Play file from start
      • 1.3.3 Stop
      • 1.3.4 Pause
      • 1.3.5 Set Volume
      • 1.3.6 Continue
      • 1.3.7 Information
      • 1.3.8 Get current play position
      • 1.3.9 Get Lenght
      • 1.3.10 Set position
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

MP3PlayerControl

General

Control a MP3 file loaded with MP3 File.

Children

  1. MP3 File Channel - MP3 File
    • Channel holding a loaded MP3 file
  2. Player Value - Value
    • Used for volume setting or getting the sound length.

Description

You can use this channel to control the MP3 File channel and get information about the currently playing MP3 file.

Control

You select the action through the interface:

Play file from start

Initialize the MP3 file and start playing it from the start

Stop

Stop playing the MP3 file and de-initialize so the filename can change.

Pause

Temporary stop playing the current MP3 file. Use "Continue" to continue playing.

Set Volume

Change the playback volume of the MP3 file.

Continue

After a "Pause" this command will continue playing the MP3 from where it was paused

Information

Get current play position

Will set the "Player Value" child to the current song position. The value is in seconds (and parts thereof).

Get Lenght

Will set the "Player Value" child to the length of the song in seconds (and parts thereof).

Set position

Change the position of the song that is currently playing. Set the position to the number of seconds from the "Player Value" child.

CallChannel

When this channel is called, the configured action will be triggered using the linked children.

Remarks

When setting the volume, the value channel linked as second child "Player Value" can be set from 0 (zero) to 1 (one). Where one is maximum volume, and 0 minimum.

All information will be set into the second child, a value channel. All information is in seconds.

When you want to use the "Continue" function, you should "Pause" the playing, not "Stop".

If you would like to load another file (the filename channel changed of the MP3 File for example) and load a new MP3 File for playing. The "Play" command will re-initialize the selected file and start playing from the start.

Tips

  • You can let this channel control a Timer Value. Multiply the position of the song with 25 to and use Set Value to set the Timer Value. This will result in a timer that is controlled by the position of the song, great for music syncing.
  • The volume between 0..1 is a logartihmic scale, to convert to a linear scale use this expression value: log10(100/volume)*-1000

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | Commands and Settings


MP3 Player Command - Quest3D

MP3 Player Command

(Redirected from MP3PlayerControl)
Jump to: navigation, search

Contents

  • 1 MP3PlayerControl
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Control
      • 1.3.2 Play file from start
      • 1.3.3 Stop
      • 1.3.4 Pause
      • 1.3.5 Set Volume
      • 1.3.6 Continue
      • 1.3.7 Information
      • 1.3.8 Get current play position
      • 1.3.9 Get Lenght
      • 1.3.10 Set position
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

MP3PlayerControl

General

Control a MP3 file loaded with MP3 File.

Children

  1. MP3 File Channel - MP3 File
    • Channel holding a loaded MP3 file
  2. Player Value - Value
    • Used for volume setting or getting the sound length.

Description

You can use this channel to control the MP3 File channel and get information about the currently playing MP3 file.

Control

You select the action through the interface:

Play file from start

Initialize the MP3 file and start playing it from the start

Stop

Stop playing the MP3 file and de-initialize so the filename can change.

Pause

Temporary stop playing the current MP3 file. Use "Continue" to continue playing.

Set Volume

Change the playback volume of the MP3 file.

Continue

After a "Pause" this command will continue playing the MP3 from where it was paused

Information

Get current play position

Will set the "Player Value" child to the current song position. The value is in seconds (and parts thereof).

Get Lenght

Will set the "Player Value" child to the length of the song in seconds (and parts thereof).

Set position

Change the position of the song that is currently playing. Set the position to the number of seconds from the "Player Value" child.

CallChannel

When this channel is called, the configured action will be triggered using the linked children.

Remarks

When setting the volume, the value channel linked as second child "Player Value" can be set from 0 (zero) to 1 (one). Where one is maximum volume, and 0 minimum.

All information will be set into the second child, a value channel. All information is in seconds.

When you want to use the "Continue" function, you should "Pause" the playing, not "Stop".

If you would like to load another file (the filename channel changed of the MP3 File for example) and load a new MP3 File for playing. The "Play" command will re-initialize the selected file and start playing from the start.

Tips

  • You can let this channel control a Timer Value. Multiply the position of the song with 25 to and use Set Value to set the Timer Value. This will result in a timer that is controlled by the position of the song, great for music syncing.
  • The volume between 0..1 is a logartihmic scale, to convert to a linear scale use this expression value: log10(100/volume)*-1000

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | Commands and Settings


Tutorials/Object Oriented Programming/Multiple inheritance - Quest3D

Tutorials/Object Oriented Programming/Multiple inheritance

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Multiple inheritance
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 ISpinner.cgr
    • 1.5 RotatingPrimitive.cgr
    • 1.6 ISlider.cgr
    • 1.7 SlidingPrimitive.cgr
    • 1.8 Start.cgr
    • 1.9 Project Files

Multiple inheritance

This tutorial was made with an early version of 4.0. Some of the channels might have different names. Example: the "interface-tab" is called "projecttree" in 4.0.

Introduction

In the programming world inheritance occurs when a childclass get's functionality from one or more underlying baseclasses. This comes in two flavors:

  • multiple inheritance: a child class inherits functionality from more than one base class;
  • level inheritance: child class A inherits functionality from class B, but before that class B inherits functionality from base class C.

In Quest3D inheritance is not really possible. There is only one situation where you could say Quest3D uses 'a form of inheritance':

If a class implements a number of interfaces but uses the default implementation of these interfaces, you can consider this as the multiple inheritance: child class A inheriting functionality from multiple interfaces (read: base classes).

This technique is discussed in this tutorial.

Functional description and context

We're going to use the project files of the last tutorial as a basis. But instead of implementing the rotate, and other,-update functionality in the functionoverride, we'll be defining an interface for it. This way we can reuse the rotation, etc-functionality with more ease, for instance:

  • Class A inherits (implements but does NOT override!) from IPrimitive and ISpinner, hence becomes a spinning primitive;
  • Class B inherits from IPrimitive and ISlider and thus becomes a sliding primitive.

So what do we need?

1. The IPrimitive interface definition from the previous tutorial. We'll have to add some additional member accessors to set more than just the rotation;

2. Two new interfaces containing the updatelogic: ISpinner and ISlider;

3. The classes A and B to show the inheritance technique. In these classes we need to override the update() function to couple IPrimitive and ISpinner/ISlider;

4. An updated start.cgr to add some instances of our newly created classes.

Design

As show in the diagram:

ISpinner consists of:

  • axis: the axis to spin on;
  • direction: directionmodifier of the spin (1: clockwise, -1: counterclockwise);
  • step: the incremental step of the spin, in degrees;
  • current: workervariable;
  • getNextDir(): computes the next directionvector.

ISlider consists of:

  • min/max: the boundaries of the slidingaxis;
  • direction: directionmodfiier of the slide (1: left to right, -1: right to left);
  • step: the incremental step of the slide, in units;
  • length: the length of the slider (max - min);
  • current: workervariable;
  • getNextPos(): computes the next positionvector.

IPrimitive gets a new accessor:

  • setPosition(): sets a new position vector.

ISpinner.cgr

Let's start with creating the spinning logic.

1. Create a new channelgroup "Spinner";

2. Open the OO Editor and create the "ISpinner"-interface;

3. Drag the ISpinner's "getNextDir()"-functiontarget into the channelgroup and implement it:

RotatingPrimitive.cgr

Now let's create the class implementation "RotatingPrimitive" and couple IPrimitive and ISpinner together.

4. Create a new channelgroup "RotatingPrimitive";

5. Open the OO Editor and create the "RotatingPrimitive"-class, which implements the "IPrimitive"- and "ISpinner"-interfaces:

6. Override the update() function and implement it:

Instead of calling the default update()-function of IPrimitive, the channellogic will call this implementation, in which:

  • We calculate the new directionvector using the ISpinner's "getNextDir()"-function;
  • And set this new function using the IPrimitive's "setRotation()"-memberaccessor.

ISlider.cgr

The "ISlider"-interface is similar to the "ISpinner"-interface, but instead of defining and axis, we use min- and max-bounds to define the movementspace.

7. Create a new channelgroup "Slider";

8. Open the OO Editor and create the "ISlider"-interface;

9. Drag the ISlider's "getNextPos()"-functiontarget into the channelgroup and implement it:

SlidingPrimitive.cgr

Now let's create the class implementation "SlidingPrimitive" and couple IPrimitive and ISlider together.

10. Create a new channelgroup "SlidingPrimitive";

11. Open the OO Editor and create the "SlidingPrimitive"-class, which implements the "IPrimitive"- and "ISlider"-interfaces:

12. Override the update() function and implement it:

Instead of calling the default update()-function of IPrimitive, the channellogic will call this implementation, in which:

  • We calculate the new positionvector using the ISlider's "getNextPos()"-function;
  • And set this new function using the IPrimitive's "setPosition()"-memberaccessor.

Start.cgr

Now let's put it all together.

13. Reuse the "Start.cgr" from the last tutorial;

14. Clear the Class Instance List and fill it with the following classes:

  • Primitive, position(5,1,-3), rotation(0,1.52,0), size(0.5,0.5,2), color(0,0,1), type(cylinder);
  • RotatingPrimitive, position(0,2,3), rotation(0,0,0), size(0.5,0.5,0.5), color(0,1,0), type(torus);
  • SlidingPrimitive, position(-10,0,0), rotation (0.72,0,0), size(1,1,1), color(1,0,0), type(box);

and for the diehards:

  • ComboPrimitive, position(0,0,0, rotation(0,1.52,0), size(1,1,1), color(1,1,0), type(box).

Which should give you the following result:

Project Files

003 - Inheritance.zip

Categories: Tutorials | OO


Tutorials/Object Oriented Programming/Multiple inheritance - Quest3D

Tutorials/Object Oriented Programming/Multiple inheritance

< Tutorials | Object Oriented Programming(Redirected from Tutorial/OO/Basic Concepts/Multiple inheritance)
Jump to: navigation, search

Contents

  • 1 Multiple inheritance
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 ISpinner.cgr
    • 1.5 RotatingPrimitive.cgr
    • 1.6 ISlider.cgr
    • 1.7 SlidingPrimitive.cgr
    • 1.8 Start.cgr
    • 1.9 Project Files

Multiple inheritance

This tutorial was made with an early version of 4.0. Some of the channels might have different names. Example: the "interface-tab" is called "projecttree" in 4.0.

Introduction

In the programming world inheritance occurs when a childclass get's functionality from one or more underlying baseclasses. This comes in two flavors:

  • multiple inheritance: a child class inherits functionality from more than one base class;
  • level inheritance: child class A inherits functionality from class B, but before that class B inherits functionality from base class C.

In Quest3D inheritance is not really possible. There is only one situation where you could say Quest3D uses 'a form of inheritance':

If a class implements a number of interfaces but uses the default implementation of these interfaces, you can consider this as the multiple inheritance: child class A inheriting functionality from multiple interfaces (read: base classes).

This technique is discussed in this tutorial.

Functional description and context

We're going to use the project files of the last tutorial as a basis. But instead of implementing the rotate, and other,-update functionality in the functionoverride, we'll be defining an interface for it. This way we can reuse the rotation, etc-functionality with more ease, for instance:

  • Class A inherits (implements but does NOT override!) from IPrimitive and ISpinner, hence becomes a spinning primitive;
  • Class B inherits from IPrimitive and ISlider and thus becomes a sliding primitive.

So what do we need?

1. The IPrimitive interface definition from the previous tutorial. We'll have to add some additional member accessors to set more than just the rotation;

2. Two new interfaces containing the updatelogic: ISpinner and ISlider;

3. The classes A and B to show the inheritance technique. In these classes we need to override the update() function to couple IPrimitive and ISpinner/ISlider;

4. An updated start.cgr to add some instances of our newly created classes.

Design

As show in the diagram:

ISpinner consists of:

  • axis: the axis to spin on;
  • direction: directionmodifier of the spin (1: clockwise, -1: counterclockwise);
  • step: the incremental step of the spin, in degrees;
  • current: workervariable;
  • getNextDir(): computes the next directionvector.

ISlider consists of:

  • min/max: the boundaries of the slidingaxis;
  • direction: directionmodfiier of the slide (1: left to right, -1: right to left);
  • step: the incremental step of the slide, in units;
  • length: the length of the slider (max - min);
  • current: workervariable;
  • getNextPos(): computes the next positionvector.

IPrimitive gets a new accessor:

  • setPosition(): sets a new position vector.

ISpinner.cgr

Let's start with creating the spinning logic.

1. Create a new channelgroup "Spinner";

2. Open the OO Editor and create the "ISpinner"-interface;

3. Drag the ISpinner's "getNextDir()"-functiontarget into the channelgroup and implement it:

RotatingPrimitive.cgr

Now let's create the class implementation "RotatingPrimitive" and couple IPrimitive and ISpinner together.

4. Create a new channelgroup "RotatingPrimitive";

5. Open the OO Editor and create the "RotatingPrimitive"-class, which implements the "IPrimitive"- and "ISpinner"-interfaces:

6. Override the update() function and implement it:

Instead of calling the default update()-function of IPrimitive, the channellogic will call this implementation, in which:

  • We calculate the new directionvector using the ISpinner's "getNextDir()"-function;
  • And set this new function using the IPrimitive's "setRotation()"-memberaccessor.

ISlider.cgr

The "ISlider"-interface is similar to the "ISpinner"-interface, but instead of defining and axis, we use min- and max-bounds to define the movementspace.

7. Create a new channelgroup "Slider";

8. Open the OO Editor and create the "ISlider"-interface;

9. Drag the ISlider's "getNextPos()"-functiontarget into the channelgroup and implement it:

SlidingPrimitive.cgr

Now let's create the class implementation "SlidingPrimitive" and couple IPrimitive and ISlider together.

10. Create a new channelgroup "SlidingPrimitive";

11. Open the OO Editor and create the "SlidingPrimitive"-class, which implements the "IPrimitive"- and "ISlider"-interfaces:

12. Override the update() function and implement it:

Instead of calling the default update()-function of IPrimitive, the channellogic will call this implementation, in which:

  • We calculate the new positionvector using the ISlider's "getNextPos()"-function;
  • And set this new function using the IPrimitive's "setPosition()"-memberaccessor.

Start.cgr

Now let's put it all together.

13. Reuse the "Start.cgr" from the last tutorial;

14. Clear the Class Instance List and fill it with the following classes:

  • Primitive, position(5,1,-3), rotation(0,1.52,0), size(0.5,0.5,2), color(0,0,1), type(cylinder);
  • RotatingPrimitive, position(0,2,3), rotation(0,0,0), size(0.5,0.5,0.5), color(0,1,0), type(torus);
  • SlidingPrimitive, position(-10,0,0), rotation (0.72,0,0), size(1,1,1), color(1,0,0), type(box);

and for the diehards:

  • ComboPrimitive, position(0,0,0, rotation(0,1.52,0), size(1,1,1), color(1,1,0), type(box).

Which should give you the following result:

Project Files

003 - Inheritance.zip

Categories: Tutorials | OO


Reference Manual/Editor/Nature & Pathfinding Section - Quest3D

Reference Manual/Editor/Nature & Pathfinding Section

< Reference Manual | Editor
Jump to: navigation, search

Nature & Pathfinding Section

This section of Quest3D can be used for the nature painting system and the path finding system.

3D Graph Painting

Window with settings and tools to help you create a path that can be used for path finding.

  • 3D Graph Painting

Nature Painting

Window with settings and tools to help you paint nature objects in your scene.

  • Nature Painting

One Level Up - Editor

Back to Main Index

Category: Editor


Reference Manual/Editor/Nature Painting - Quest3D

Reference Manual/Editor/Nature Painting

< Reference Manual | Editor
Jump to: navigation, search

Nature Painting

General

Nature painting is a method of rendering objects at multiple positions in your scene being able to place them by painting on objects and being able to not draw the objects at a certain distance. Nature painting works on a per surface bases which means that if you want to use an object with multiple surfaces you have to link a nature paint channel between each 3D Objectdata channel of your objects surfaces.

Nature painting requires you to link CollisionObject channels to it on which you will be able to paint new items in the Nature Painting window of the Nature & 3D Graph section.

All items will be places in an internal bsp tree which can very quickly draw the correct subset of items. Nature painting will set the alpha or texture factor of the material for each item rendered so that it is able to fade correctly. You have to edit the surface so that this will result in fading of your object when creating your own nature painting item. This will make sure objects fade in and out of the screen correctly. You are able to set the cull distance and the fade distance of each nature object. The cull distance is the distance after which the objects are not rendered at all anymore and the fade distance the distance where the objects start fading in. The cull distance needs to be larger then the fade distance. For example you can start the fading at 30 and cull at 40. Items at a distance of 35 will be partially faded and items at 25 will be fully draw. Items further then 40 will not be drawn at all.

The nature painting window will show the Nature channels in your project. You can select multiple nature items at the same time to be able to draw different items at the same time.

By clicking the Paint Mode button you will be able to draw the nature items on the object that you connected to its collision object. Make sure you are in edit mode and that you can clearly see the surface you want to paint on.

You can select random rotation to let each item get a different heading. By deselecting this option you can manually enter heading pitch and bank to for example be able to paint a lantern the direction you want it to face. The manual rotation values are in degrees.

The paint sizing options SizeX Y and Z determine the size of the object you paint and the randX Y and Z an offset to that size. So for example a SizeY of 1 and a randY of 0.5 will generate items randomly between 0.75 and 1.25.

When painting you can add single items or many items in a circle by selecting single or sphere. When using a sphere paint option the density and size slider determine how many items in the sphere will be added and how big the sphere is.

When you have an object with multiple surface like a tree with leaves you want the leaves to stay relative to the trunk. The Same Position option will make sure that the selected items have the same offset to each other. Make sure you select both nature items that belong to each other for this option to work.

Once painted there are a few options for the selected items. The Fade distance and Cull distance of a nature item will determine how far the camera must be from an item to cull it or start fading it in. Note here that if you paint very many items the speed decrease will be very minimal if most of the items exceed the cull distance. This means creating a very large landscape with trees everywhere that are only shown when the camera is close can be very fast.

Instead of an object you can also use a square with an alpha texture of for example a bush. This square can be automatically turned to the camera by using the Face Camera option.

One Level Up Nature & Pathfinding Section

Back to - Editor

Back to Main Index

Category: Editor


NaturePainter - Quest3D

NaturePainter

Contents

  • 1 NaturePainter
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

NaturePainter

General

Draw and render multiple object items that can fade at a distance.

Children

  1. Source Object - 3D ObjectData
    • Objectdata that is the source of the nature items to clone
  2. Target Object(s) - CollisionObject
    • Collision object on which the nature items can be painted
  3. Fade Distance - Value
    • Distance from which objects start to fade
  4. Cull Distance - Value
    • Distance from which objects are culled
  5. SLOD Levels - Envelope
    • Envelope to control LOD level switching.
  6. Fading Control - Envelope
    • Envelope to control object fading.
  7. Cull Angle - Value
    • Distance from which objects are culled

Description

This channel allows you to quickly paint multiple items on the collision object linked to this channel. In the Nature & Pathfinding Section you are able to select the created nature paint item and if the collision objects are linked correctly draw on the items. This channel is able to fade the nature objects at a distance which makes it possible to draw thousands of items (low polygon items) and only quickly draw the visible subset (a few hunderd low polygon items can still be fast) quickly.

If you use facing items make sure the right side of the items is facing the camera else you might be looking at the back of your item.

CallChannel

Calling this channel will render the nature items.

Applications

Create a forrest or bushes quickly on your landscape.

Tips

Create a square object in Quest3D texture it with for example a bush texture that has an alpha map where the texture should be invisible. Scale the square item as you like and make sure the square items lowest position is moved so it is near the ground level. Duplicate this item by copy pasting it and create a number of squares that together are a bush. Use the tool "Collapse" to create one big object of your bush select the object in the channel graph and press the "Make 2-sided" tool once. Copy this bush into your project and put a nature item in between the Surface and the 3D ObjectData channel. Link the CollisionObject channel(s) to your nature item and you are ready to start painting nice bushes on your object.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Network Command - Quest3D

Network Command

(Redirected from Network Actions)
Jump to: navigation, search

Contents

  • 1 Network Actions
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Create Server
      • 1.3.2 Remove Server
      • 1.3.3 Session connected
      • 1.3.4 This computer created a server
      • 1.3.5 Server Removed
      • 1.3.6 Session terminated
      • 1.3.7 Connection refused
      • 1.3.8 Connect to own server
      • 1.3.9 Disconnect client
      • 1.3.10 Start enumerating hosts
      • 1.3.11 Connect to host
      • 1.3.12 Set Host IP Address
      • 1.3.13 A player connected
      • 1.3.14 A player disconnected
      • 1.3.15 Set Unique ID to identify session
      • 1.3.16 Set new player control no
      • 1.3.17 Set enumeration interval
      • 1.3.18 Set enumeration retry count
      • 1.3.19 Set session name
      • 1.3.20 Set network latency
    • 1.4 CallChannel
    • 1.5 Remarks

Network Actions

General

Use actions to control the state of the network

Children

  1. Setting specific - All Types Channel
    • The type of child or children that need to be linked are different per selected action. Please see the documentation on what children need to be linked.

Description

This channel is used to manage the state of the network and to help when the network performs certain tasks.

The channel can be configured through the channel properties dialog. In this dialog you are able to select the action.

Some action require to be called every frame, other action will require the channel to be called just one time. This is documented below for every action.

Create Server

This action will create a server on the computer that calls this action. If you link a Text you can provide a password that must be entered by the client when connecting to the created session. If you link a Value the server will connect on the port number provided. Note that the client then too must specifically connect to the servers IP adress with correct port number. The server will be started in the background and once it is created the network action "This computer created a server" will be triggered. This action needs to be called only once.

Remove Server

This action will start the removal of a server if it is available on the current PC. The network action "Server Removed" will be triggered once the server is completely removed. This action needs to be called only once.

Session connected

Once the client is connected to a server this action will trigger all children once. You need to keep calling this action.

This computer created a server

Once a server has been created, this action will trigger its children. You need to keep calling this action.

Server Removed

Once the server is removed from the current PC after it was created, this action will trigger its children. This action often follows after the "Remove Server" action. You need to keep calling this action.

Session terminated

Once the current client disconnects from the server it was connected to or is disconnected from the server, this action will trigger its children. You need to keep calling this action.

Connection refused

When a client tries to connect to a session but that session needed a password or the password was incorrect, this action will trigger its children. Also when the client is unable to connect to the server this action will trigger its children. You need to keep calling this action.

Connect to own server

When you have created a server, this action is the easiest way to connect to that server. This action will enumerate all sessions on the current network (or IP address if one is set) and if a session with the same host name as the computer is found, it will connect to that session. Once the session has been connected to, the "Session connected" action will be triggered. You need to call this action only once.

Disconnect client

Disconnect the client session if the client was connected to a session. The network action "Session terminated" will be called once the client has been fully disconnected. This action needs to be called only once.

Start enumerating hosts

For a client to connect to a server (host) the available hosts need to be enumerated. If no IP address is set, the local area network is scanned for available sessions that used the same Unique ID. The Network Info Value channel can be used for the number of hosts found. You are able to configure the length of the enumeration with the "Set Enumeration Interval" and "Set enumeration retry count" actions. When these action are not configured the network will be searched for hosts 5 times for 1 second. No new enumerations can be started while it is taking place. You can also use the Network Info Value channel to find out the enumeration status. If you are sure only one host will be available on the target network you can connect to the first host that is found. A template is available that will enumerate and display the found hosts for you. This action needs to be called only once and only when it is not already enumerating.

Connect to host

This network action allows you to connect to a session. After the "Start enumerating hosts" action, any detected hosts become available. To connect to a specific host, connect a value as a child and an optional password as text to the second child. Once this channel is called it will try to connect to the selected host with the optional password. If this is succesfull the network action "Session connected" is triggered or the network action "Connection refused" is triggered if not. With the Network Info Value channel you are able to retrieve the number of enumerated hosts and with the Network Text channel the name of the host or session. This action only needs to be called once.

Set Host IP Address

Use this action to enumerate or connect to a specific IP address (which can also be a host name) in stead of scanning on a local network. Link a Text to this channel to set the IP adres or host name. If this child is not connected, the local area network is used to enumerate or connect. You can also link a Value if you want to change the port number to connect to. The default port number is 25857. You will only need to call this channel once.

A player connected

If a player joins the session, this channel will call its children once. Note that this is not done on a per player basis. More than one player might have joined the session at once. If you react to this message to create new players on the network dynamically make sure you add all the players that joined when this channel was called. You can use the Network Info Value to retrieve the number of connected players. If the current player connects to a host, this action will also be triggered. This action will only work when you are connected to a host/server. You need to keep calling this action.

A player disconnected

If a player leaves the session, this channel will call its children once. Note that this is not done on a per player basis. More than one player might leave the session at once. If the client disconnects itself, this action will also be triggered. You need to keep calling this action.

Set Unique ID to identify session

Before doing anything with other network channels you need to link an UniqueID channel as a child to identify this application on the network. Make sure all clients and the server use the same UniqueID to identify a session. If you don't set an UniqueID you will only be able to connect to your own session since that session creates a UniqueID on startup. Make sure you use this action before you do any other network action! You will only need to call this channel once.

Set new player control no

Once your session is connected you can change which player controls the network items dynamically. This change will be broadcasted over the network so that all clients have the same player control setting for a certain network item. First link a normal value as a child to set which player becomes the owner. Any number of network items (Network Value, Network Text, Network Trigger or Network Buffer) can be linked that should be have the player control number chaned. The initial player control number that is configured in the properties dialogs is overidden. You will only need to call this channel once.

Set enumeration interval

Use this action to change the number of seconds the host enumeration will take. Note that you are unable to re-enumerate or change the IP address when the enumeration is still running. The default value is 1. Depending on the retry count setting the enumeration will be started again after the number of seconds is elapsed. A Value channel as child will be used to set the number of seconds. You will only need to call this channel once.

Set enumeration retry count

Use this action to set how many times the enumeration will try to find a host. Note that you are unable to re-enumerate or change the IP address while the enumeration is running. The default value is 5. A Value channel as child will be used to set the number of retries. You will only need to call this channel once.

Set session name

If this computer creates a server session, you can change the name of that session by using this action. Make sure you set the session name before you create a server. You will only need to call this channel once.

Set network latency

This command will set the network latency, used to synchronize network values (VR Only). A child value contains the latency in seconds. A latency between 50 and 200 milliseconds is recommended.

CallChannel

Please see above

Remarks

Network channels use an invisible network channel manager to communicate with each other. This channel creates a reference index number with this manager. If another "Network Actions" channel is added; the reference number increases by one and if you remove this channel (or delete a group with this channel) the reference number decreased. If the reference is equal to 0 and a server still exists, that server is removed. Also all connected sessions will be disconnected. This will happen when you for example create a server but forget to disconnect before (re-)loading a new project. Please note that the removing of the server will take some while and when a new project is loaded the action "Server Removed" can be called immediately.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Buffer - Quest3D

Network Buffer

Contents

  • 1 Network Buffer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Remarks

Network Buffer

General

This is the channel that you can use to control buffers over the network and have different players control different buffers.

Children

none

Description

This is the network buffer interface. A specific player controls a network buffer. In the interface you can set the controlling player by hand but you can also use the Network Actions channel action "Set new player control no." to dynamically change the controlling player.

Network buffers are always sent guaranteed.

You can configure how large you want each package to be. On modem connections smaller package sizes will give better transfer rates but on a very fast network sending the complete buffer in one package is possible. DirectPlay will also optimize how the actual data is transferred. You can monitor how this is done by looking at how many packages have arrived at the client receiving this buffer. If you set the package size to 0 (zero) the system will automatically select a package size based on the size of the buffer.

With the Network Info Value channel you can retrieve the state of the buffer.

Remarks

The buffer size is configured in Kilobytes!

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Command - Quest3D

Network Command

Contents

  • 1 Network Actions
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Create Server
      • 1.3.2 Remove Server
      • 1.3.3 Session connected
      • 1.3.4 This computer created a server
      • 1.3.5 Server Removed
      • 1.3.6 Session terminated
      • 1.3.7 Connection refused
      • 1.3.8 Connect to own server
      • 1.3.9 Disconnect client
      • 1.3.10 Start enumerating hosts
      • 1.3.11 Connect to host
      • 1.3.12 Set Host IP Address
      • 1.3.13 A player connected
      • 1.3.14 A player disconnected
      • 1.3.15 Set Unique ID to identify session
      • 1.3.16 Set new player control no
      • 1.3.17 Set enumeration interval
      • 1.3.18 Set enumeration retry count
      • 1.3.19 Set session name
      • 1.3.20 Set network latency
    • 1.4 CallChannel
    • 1.5 Remarks

Network Actions

General

Use actions to control the state of the network

Children

  1. Setting specific - All Types Channel
    • The type of child or children that need to be linked are different per selected action. Please see the documentation on what children need to be linked.

Description

This channel is used to manage the state of the network and to help when the network performs certain tasks.

The channel can be configured through the channel properties dialog. In this dialog you are able to select the action.

Some action require to be called every frame, other action will require the channel to be called just one time. This is documented below for every action.

Create Server

This action will create a server on the computer that calls this action. If you link a Text you can provide a password that must be entered by the client when connecting to the created session. If you link a Value the server will connect on the port number provided. Note that the client then too must specifically connect to the servers IP adress with correct port number. The server will be started in the background and once it is created the network action "This computer created a server" will be triggered. This action needs to be called only once.

Remove Server

This action will start the removal of a server if it is available on the current PC. The network action "Server Removed" will be triggered once the server is completely removed. This action needs to be called only once.

Session connected

Once the client is connected to a server this action will trigger all children once. You need to keep calling this action.

This computer created a server

Once a server has been created, this action will trigger its children. You need to keep calling this action.

Server Removed

Once the server is removed from the current PC after it was created, this action will trigger its children. This action often follows after the "Remove Server" action. You need to keep calling this action.

Session terminated

Once the current client disconnects from the server it was connected to or is disconnected from the server, this action will trigger its children. You need to keep calling this action.

Connection refused

When a client tries to connect to a session but that session needed a password or the password was incorrect, this action will trigger its children. Also when the client is unable to connect to the server this action will trigger its children. You need to keep calling this action.

Connect to own server

When you have created a server, this action is the easiest way to connect to that server. This action will enumerate all sessions on the current network (or IP address if one is set) and if a session with the same host name as the computer is found, it will connect to that session. Once the session has been connected to, the "Session connected" action will be triggered. You need to call this action only once.

Disconnect client

Disconnect the client session if the client was connected to a session. The network action "Session terminated" will be called once the client has been fully disconnected. This action needs to be called only once.

Start enumerating hosts

For a client to connect to a server (host) the available hosts need to be enumerated. If no IP address is set, the local area network is scanned for available sessions that used the same Unique ID. The Network Info Value channel can be used for the number of hosts found. You are able to configure the length of the enumeration with the "Set Enumeration Interval" and "Set enumeration retry count" actions. When these action are not configured the network will be searched for hosts 5 times for 1 second. No new enumerations can be started while it is taking place. You can also use the Network Info Value channel to find out the enumeration status. If you are sure only one host will be available on the target network you can connect to the first host that is found. A template is available that will enumerate and display the found hosts for you. This action needs to be called only once and only when it is not already enumerating.

Connect to host

This network action allows you to connect to a session. After the "Start enumerating hosts" action, any detected hosts become available. To connect to a specific host, connect a value as a child and an optional password as text to the second child. Once this channel is called it will try to connect to the selected host with the optional password. If this is succesfull the network action "Session connected" is triggered or the network action "Connection refused" is triggered if not. With the Network Info Value channel you are able to retrieve the number of enumerated hosts and with the Network Text channel the name of the host or session. This action only needs to be called once.

Set Host IP Address

Use this action to enumerate or connect to a specific IP address (which can also be a host name) in stead of scanning on a local network. Link a Text to this channel to set the IP adres or host name. If this child is not connected, the local area network is used to enumerate or connect. You can also link a Value if you want to change the port number to connect to. The default port number is 25857. You will only need to call this channel once.

A player connected

If a player joins the session, this channel will call its children once. Note that this is not done on a per player basis. More than one player might have joined the session at once. If you react to this message to create new players on the network dynamically make sure you add all the players that joined when this channel was called. You can use the Network Info Value to retrieve the number of connected players. If the current player connects to a host, this action will also be triggered. This action will only work when you are connected to a host/server. You need to keep calling this action.

A player disconnected

If a player leaves the session, this channel will call its children once. Note that this is not done on a per player basis. More than one player might leave the session at once. If the client disconnects itself, this action will also be triggered. You need to keep calling this action.

Set Unique ID to identify session

Before doing anything with other network channels you need to link an UniqueID channel as a child to identify this application on the network. Make sure all clients and the server use the same UniqueID to identify a session. If you don't set an UniqueID you will only be able to connect to your own session since that session creates a UniqueID on startup. Make sure you use this action before you do any other network action! You will only need to call this channel once.

Set new player control no

Once your session is connected you can change which player controls the network items dynamically. This change will be broadcasted over the network so that all clients have the same player control setting for a certain network item. First link a normal value as a child to set which player becomes the owner. Any number of network items (Network Value, Network Text, Network Trigger or Network Buffer) can be linked that should be have the player control number chaned. The initial player control number that is configured in the properties dialogs is overidden. You will only need to call this channel once.

Set enumeration interval

Use this action to change the number of seconds the host enumeration will take. Note that you are unable to re-enumerate or change the IP address when the enumeration is still running. The default value is 1. Depending on the retry count setting the enumeration will be started again after the number of seconds is elapsed. A Value channel as child will be used to set the number of seconds. You will only need to call this channel once.

Set enumeration retry count

Use this action to set how many times the enumeration will try to find a host. Note that you are unable to re-enumerate or change the IP address while the enumeration is running. The default value is 5. A Value channel as child will be used to set the number of retries. You will only need to call this channel once.

Set session name

If this computer creates a server session, you can change the name of that session by using this action. Make sure you set the session name before you create a server. You will only need to call this channel once.

Set network latency

This command will set the network latency, used to synchronize network values (VR Only). A child value contains the latency in seconds. A latency between 50 and 200 milliseconds is recommended.

CallChannel

Please see above

Remarks

Network channels use an invisible network channel manager to communicate with each other. This channel creates a reference index number with this manager. If another "Network Actions" channel is added; the reference number increases by one and if you remove this channel (or delete a group with this channel) the reference number decreased. If the reference is equal to 0 and a server still exists, that server is removed. Also all connected sessions will be disconnected. This will happen when you for example create a server but forget to disconnect before (re-)loading a new project. Please note that the removing of the server will take some while and when a new project is loaded the action "Server Removed" can be called immediately.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Info Text - Quest3D

Network Info Text

Contents

  • 1 Network Info Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Session name
      • 1.3.2 Computer Name
    • 1.4 CallChannel

Network Info Text

General

Retrieve specific information about the network.

Children

  1. Input value - Value
    • Session number for the "Session Name" setting

Description

This channel is able to retrieve certain information from the network in the form of a text. If this channel is called then the text of this channel is set to the information configured.

Through the properties dialog the channel can be configured.

The following information can be retrieved:

Session name

When you enumerate for sessions you can retrieve the session names by specifying a session number. Link a Value channel for the session number. With the Network Info Value you can retrieve how many sessions are available.

Computer Name

This will retrieve the name of the computer as provided by Windows.

CallChannel

The information will be retrieved and the text of the channel will be set.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Info Value - Quest3D

Network Info Value

Contents

  • 1 Network Info Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Host response count
      • 1.3.2 Enumerating hosts status
      • 1.3.3 Current player number
      • 1.3.4 Host latency
      • 1.3.5 Connection status
      • 1.3.6 Player active state
      • 1.3.7 Number of players
      • 1.3.8 Player control number
      • 1.3.9 Package round trip latency (ms)
      • 1.3.10 Throughput bytes per second (bps)
      • 1.3.11 Bytes sent guaranteed
      • 1.3.12 Bytes sent non-guaranteed
      • 1.3.13 Bytes received guaranteed
      • 1.3.14 Bytes received non-guaranteed
      • 1.3.15 Bytes retried
      • 1.3.16 Bytes dropped
      • 1.3.17 Packages sent guaranteed
      • 1.3.18 Packages sent non-guaranteed
      • 1.3.19 Network buffer percentage complete
      • 1.3.20 Network buffer transfer status
      • 1.3.21 Network items are still initializing
      • 1.3.22 Server Created

Network Info Value

General

This channel can retrieve specific information about the network.

Children

  1. Setting specific - All Types Channel
    • Specific to the selected information

Description

When this channel is called, it will retrieve the configured information from the network and set its value.

The information to retrieve can be configured through the properties window.

The following information can be retrieved:

Host response count

When you enumerate for hosts with the Network Actions this value will tell you how many hosts/sessions have been found. Please mind that this value changes every time a new session/host is found during enumeration.

Enumerating hosts status

When you start to enumerate hosts/sessions with the Network Actions channel you need to wait before you can start a new enumeration. This setting will change value to 1 when the network is still enumerating and 0 (zero) if the enumeration has ended.

Current player number

Once a client is connected to a host, you can retrieve which player number on that host the current client is.

Host latency

Link a Value child to select a host number. This can be done after enumerating hosts with the Network Actions channel. The value will be set to the latency for the selected host. If the requested host does not exist this value will become –1. The current number of hosts can be retrieved with the "Host response count" setting.

Connection status

This info value will give the current connection status for the the connected client. The value of the channel will be set to the corresponding status listed here:

0 - Uninitialized 1 - Initialized 2 - Connecting to a host 3 - Joining a host 4 - Enumerating 5 - Connection is pending 6 - Connection is pending and has been answered 7 - Connection is initiating 8 - Connection is being tested 9 - Connection established

Once the status has reaced 9 the client is fully connected to the server.

Player active state

This channel needs a Value channel linked to determine the player in the network you want to retrieve the active state from. If this player is still active the channel will be set to 1, and if not to 0 (zero). You are able to retrieve the number of players in the network with the "Player Count" setting. Because this setting will return the maximum number of players in the network and will not be descreased if a player left you can use this setting to retrieve the actual status of a player.

Number of players

Retrieves the current maximum number of players that are connected. If a player leaves a session, this number will NOT be decreased. You are able to use the "Player active state" setting to retrieve if a player is active. This value is never decreased because problems will occur when using an array of players; the last player should remain the last player.

Player control number

You can link a Network Text, Network Value, Network Buffer or Network Trigger channel that should be used to retrieve the player control number from. This number can be configured in the properties dialog of these channels but can also be changed with the Network Actions channel. The player number of the linked child is retrieved and this channel is set to that value. The value of this channel will be set to -1 when the linked network channel is not yet initialized.

Package round trip latency (ms)

Approximate time, in milliseconds (ms), it takes a packet to reach the remote computer and to return to the local computer. This number will change throughout the session as network conditions change. The value of this channel will be set to the number of milliseconds.

Throughput bytes per second (bps)

Approximate throughput, in bytes per second (Bps), for the current network connection. This number will change throughout the session as network conditions change. This value is approximate, and you may want to calculate your own value for greater accuracy.

Bytes sent guaranteed

Amount, in bytes, of guaranteed messages that have been sent.

Bytes sent non-guaranteed

Amount, in bytes, of non-guaranteed messages that have been sent.

Bytes received guaranteed

Amount, in bytes, of guaranteed messages that have been received.

Bytes received non-guaranteed

Amount, in bytes, of non-guaranteed messages that have been received.

Bytes retried

Amount, in bytes, of messages that have been retried.

Bytes dropped

Amount, in bytes, of messages that have been dropped.

Packages sent guaranteed

Number of packets of guaranteed messages that have been sent.

Packages sent non-guaranteed

Amount, in bytes, of non-guaranteed messages that have been sent.

Network buffer percentage complete

Link a Network Buffer channel to retrieve the percentage that has be sent over the network. These buffers are transmitted over the network in parts. The value of this channel will be set to the percentage of the buffer that has been transferred. This is a range from 0 to 1.

Network buffer transfer status

Link a Network Buffer channel to retrieve the transfer status of the buffer. The value of this channel will be set to 1 if the buffer is still being transferred and to 0 when it is done.

Network items are still initializing

If a network connection is established, all network items (values, text, buffers and triggers) are initialized to a value that is currently stored on the server. The value of this channel will be set to 1 if not all network items have been initialized and to 0 (zero) when this is done.

Server Created

This info value will return 1 if a server was created.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Reference Manual/Editor/General/Network Information - Quest3D

Reference Manual/Editor/General/Network Information

< Reference Manual | Editor | General
Jump to: navigation, search

Network Information

(Quest3D Power and VR Edition only)

This window will show statistics about the current network connection. See the Network Actions channel documentation for more information.

One Level Up General

Back to Editor

Back to Main Index

Category: Editor


Network Matrix - Quest3D

Network Matrix

Contents

  • 1 Network Matrix
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

Network Matrix

General

This is the channel that you can use to control values over the network and have different players control different values.

Children

  1. Matrix to transfer - Matrix
    • This value is transferred over the network when the current player is controlling the Matrix.

Description

A specific player controls a network value. In the properties dialog you can set the controlling player by hand but you can also use the network action "Set new player control no." to dynamically change the controlling player.

To optimize network traffic and to make sure some network values are updated simultaneously you can assign a value to be part of a data group. For example, the position of an object (defined as XYZ) are 3 values that need to be updated simultaneously, so make sure they are in the same data group. With data groups you can also control the size of the packages that are being sent over the network. Using multiple groups will create more frequent smaller packages instead of infrequent large packages. In the properties dialog you can select an existing group or create a new group.

Guaranteed data transfer

For each group you can decide if you want that group to be sent guaranteed. A guaranteed message will always arrive at the destinations, but will be much slower since confirmation messages need to be sent. With slow or had connections the "Send data guaranteed" set to oof, might result in packages being lost. The player position for example does often not need to be sent guaranteed. Because the update frequency is higher without confirmation messages, a single missing position update out of 20 will hardly be noticeable. On the other hand, a network trigger or a value such as the current score in a game are examples of that should be placed in an guaranteed group.

Continuous

With a modem connection or a busy network connection, the frequency of arriving messages is very often too slow to guarantee smooth movement of character (for example) guaranteed or not. To allow smooth movement you can turn on the "Continues value with delta" option. This option will send the last position, and how fast the object is travelling from its previous position to its current position. The receiving part of this network value will use this information to predict where the character (for example) will be positioned if the following message should not arrive. This can give great results with slow or bad connections. Because the value is estimated this setting is not suitable for exact values.

Time adjusted (VR Only)

To synchronize network data (for instance for multiple projection rendering) use 'Time Adjusted'. The network latency must be adjusted per network client. For more information see Network actions: Set network latency

CallChannel

Will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Text - Quest3D

Network Text

Contents

  • 1 Network Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

Network Text

General

This is the channel that you can use to control text over the network and have different players control different texts.

Children

  1. Text - Text
    • Text to send across clients

Description

A specific player controls a network text. In the interface you can set the controlling player by hand, but you can also use the Network Actions channel with the "Set new player control no." setting to dynamically change the controlling player.

You can assign a network text to a specific data group, which will group all items of the same type together when sent over the network. Having many groups will create more frequent smaller packages instead of infrequent large packages. In the interface you can select an existing group or create a new group.

For each group you can decide if you want that group to be sent guaranteed. A guaranteed message will always arrive at the destinations, but will be much slower since confirmation messages need to be sent. Messages that are sent without guarantee are faster, but not all might arrive. Network text itself is often sent guaranteed. See also the Network Value channel for more information on guaranteed groups.

CallChannel

Has no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Trigger - Quest3D

Network Trigger

Contents

  • 1 Network Trigger
    • 1.1 General
    • 1.2 Children
    • 1.3 Description

Network Trigger

General

This is the channel that you can use to trigger actions on the client side.

Children

  1. Value to Check - Value
    • The value that is checked to control to the trigger
  2. Channel to Trigger - All Types Channel
    • This channel is called (triggered) once

Description

This is the network trigger properties dialog. A specific player controls a network text. In the properties dialog you can change the controlling player by hand but you can also use the Network Actions channel action "Set new player control no." to dynamically change the controlling player.

The properties dialog is partly the same as the normal trigger interface letting you specify how to trigger on certain values.

You can assign a network trigger to a specific data group, which will group all items of the same type together when sent over the network. Creating multiple groups will create more frequent smaller packages instead of infrequent large packages. In the properties dialog you can select an existing group or create a new group.

For each group you can decide if you want that group to be sent guaranteed. A guaranteed message will always arrive at the destinations, but will be much slower since confirmation messages need to be sent.A network trigger is an example of a value that you might wish to place in a group that is sent guaranteed. These kinds of messages are not sent that frequent, but must reach their destinations without errors. On the other hand, a network trigger or a value such as the current score in a game are examples of that should be placed in an guaranteed group.

Note that this channel does not always trigger the client the same number of times as the sending side. If you trigger twice very fast, the package might not have been sent/received yet and the new messages might arrive simultaneously. If you want to count actions, use a Network Value that is sent guaranteed and increases each action.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Network Value - Quest3D

Network Value

Contents

  • 1 Network Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

Network Value

General

This is the channel that you can use to control values over the network and have different players control different values.

Children

  1. Value to sent - Value
    • This value is send over the network when the current player is controlling the value.

Description

A specific player controls a network value. In the properties dialog you can set the controlling player by hand but you can also use the network action "Set new player control no." to dynamically change the controlling player.

To optimize network traffic and to make sure some network values are updated simultaneously you can assign a value to be part of a data group. For example, the position of an object (defined as XYZ) are 3 values that need to be updated simultaneously, so make sure they are in the same data group. With data groups you can also control the size of the packages that are being sent over the network. Using multiple groups will create more frequent smaller packages instead of infrequent large packages. In the properties dialog you can select an existing group or create a new group.

For each group you can decide if you want that group to be sent guaranteed. A guaranteed message will always arrive at the destinations, but will be much slower since confirmation messages need to be sent. With slow or had connections the "Send data guaranteed" set to oof, might result in packages being lost. The player position for example does often not need to be sent guaranteed. Because the update frequency is higher without confirmation messages, a single missing position update out of 20 will hardly be noticeable. On the other hand, a network trigger or a value such as the current score in a game are examples of that should be placed in an guaranteed group.

With a modem connection or a busy network connection, the frequency of arriving messages is very often too slow to guarantee smooth movement of character (for example) guaranteed or not. To allow smooth movement you can turn on the "Continues value with delta" option. This option will send the last position, and how fast the object is travelling from its previous position to its current position. The receiving part of this network value will use this information to predict where the character (for example) will be positioned if the following message should not arrive. This can give great results with slow or bad connections. Because the value is estimated this setting is not suitable for exact values.

This channel can have a child where it can get a value from. The value will only be retrieved if the current player in this session is the same as the controlling value of this network value. If this is not the case, this channel will wait for packages it receives over the network and is set to the internal value (last saved or set value).

The option "Set the child when this value is set" can be used so that when a SetValue is done on the network channel its child value will also receive a SetValue. This is not the default behaviour.

CallChannel

Will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Network


Newton Ball and Socket - Quest3D

Newton Ball and Socket

Contents

  • 1 Newton Ball and Socket
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Cone Limit
      • 1.4.2 Twist Limit
    • 1.5 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Ball and Socket

Image is courtesy of Newton Game Dynamics

Children

  1. Parent Body - Newton Body
    • Optional first body of the pair to join. Can be a dynamic or static body. If this child is left unconnected the child body is joined to a fixed position in the world.
  2. Child Body - Newton Body
    • Second body of the pair to join. This body must be specified.
  3. Pivot Point - Value Vector
    • The origin of the joint relative to the child body's position at the time the joint is created.
  4. Pin Direction - Value Vector (0,1,0)
    • A unit vector representing the line of action. Literally, the direction of the pin holding the two parts of the joint together.

Description

This joint type has an anchor (the end of blue sphere) and a moveable body that is "hanging" by this anchor (the beginning of the green sphere). The movement of that body is free to all directions, but limited to a certain degree (specified in angles), so that the child body's movement is limited to a cone-shaped area. A good example for such a joint is your wrist angle or your hip joint.

Interface

Properties

Cone Limit

Value (0)

Set the joint's cone limit constraint in degrees, where:

  • 0 - Cone limit constraint is disabled;
  • 1-360 - Angle of cone constraint.

Twist Limit

Value (0)

Set the joint's twist limit around the segment axis (pindirection), where:

  • 0 - Twist limit constraint is disabled;
  • 1-360 - Angle of twist constraint.

CallChannel

The joint is created when called.

Remarks

Templates

Examples

example

See Also

  • Newton Joint

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Body - Quest3D

Newton Body

Contents

  • 1 Newton Body
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Mass
      • 1.4.2 Auto-sleep Enabled
      • 1.4.3 Auto-sleep Threshold
    • 1.5 Commands
      • 1.5.1 Reset
      • 1.5.2 Collision Geometry
    • 1.6 Editing
    • 1.7 CallChannel
  • 2 Remarks

Newton Body

Children

  1. Collision Geometry - Newton Collision Geometry
    • Defines the shape and characteristics of the body.
    • A body cannot exist without collision geometry. The body will be created as soon as the collision geometry child is attached and destroyed when the child is unlinked.
    • The collision geometry can be replaced dynamically at any time without resetting the body. This will happen automatically when editing but must be initiated at runtime via the Set Collision Geometry command.
    • Collision geometry is scaled by the Transformation child.
  2. Material - Newton Material
    • Assigns a material to the whole of the body.
    • The default material is used if a child is not linked.
    • The material can be changed at runtime by calling the Set Material Newton Body Command.
  3. Transformation - Matrix
    • The default position, rotation and scale of the body. Once active, the position and rotation of the body matrix are dictated by the simulation but the scale will always be set to the scale in this child. This ensures that 3D Objects can be scaled.
    • The body will always revert to this matrix when reset.
  4. Mass Offset - Value Vector
    • Relative position of the body's centre of mass.
    • Automatically set to the centre of the attached collision geometry.
    • This offset can be altered at any time by calling the Set Mass Offset Newton Body Command.

Description

Represents a single rigid body, dynamic or static (immovable). The body's position and orientation within the simulation are output as the matrix value of this channel.

This channel is most often connected to the Object Matrix child of a 3D Object channel in order to visualise the simulated body.

Interface

Properties

Mass

Value

The mass of the body. A mass of zero will cause the body to be immovable. Realistic values will give the best results.

Although there is no limit on mass values, it is recommended that the ratio between the heaviest and lightest bodies be kept to 200 in order to minimise the effects of floating point inaccuracies.

Auto-sleep Enabled

Boolean (true)

True: Body will be frozen in the simulation once the Threshold is breached. A sleeping body uses no resources. This is the recommended setting.

False: Body will remain active in the simulation at all times even when at rest. This setting should be used for interactive bodies to ensure full responsiveness.

Sleeping bodies are automatically reactivated as soon as any force is applied (via collisions or commands).

Auto-sleep Threshold

Value (0.01)

The body will be considered at rest and subsequently frozen if speed (linear and angular) falls below this threshold for ten simulation steps.

Commands

Reset

Sends a reset command to the body.

Call the Reset Newton Command to reset the body at runtime.

Collision Geometry

Toggles rendering of this body's collision geometry as a black wireframe model. This is purely a representation of the geometry and not equivalent to the mathematical collision detection used within the Newton engine.

Editing

Changes in the Transformation child will cause an immediate update of the body matrix and, therefore, the visual position of a parent 3D Object. This visual feedback eases changing the starting position of a body. The monitoring of children and auto-updating occurs during editing only. Newton Body Commands must be used to trigger these updates during runtime.

A change to Transformation in this way also scales and reapplies the linked collision geometry which could cause confusion if it has since been replaced using the Set Collision Geometry Newton Body Command.

The body matrix can be manipulated via the parent 3D Object in the Animation editor even while the simulation is running. This allows for dynamic experimentation in a body's position and interaction with others. It is best to move the body in "World Coordinate" mode so the movement axis aren't continually changing.

CallChannel

The body will be created when called. This allows bodies to exist without a visual representation.

Remarks

  • The channel's internal matrix is only updated if the body is active, not every frame as may be expected. This reduces processing time especially in simulations containing thousands of sleeping bodies.
  • Most properties and child data can be altered whilst the simulation is running, without recreating the body, by issuing commands via the Newton Body Command channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Body Command - Quest3D

Newton Body Command

Contents

  • 1 Newton Body Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Command
      • 1.4.1 Reset
      • 1.4.2 Set Force
      • 1.4.3 Add Force
      • 1.4.4 Add Relative Force
      • 1.4.5 Add Force at Point
      • 1.4.6 Add Force at Relative Point
      • 1.4.7 Add Relative Force at Relative Point
      • 1.4.8 Set Torque
      • 1.4.9 Add Torque
      • 1.4.10 Add Relative Torque
      • 1.4.11 Set One-Step Force Mode
      • 1.4.12 Set One-Frame Force Mode
      • 1.4.13 Set Linear Velocity
      • 1.4.14 Set Angular Velocity
      • 1.4.15 Add Impulse
      • 1.4.16 Set Auto-sleep Threshold
      • 1.4.17 Set Linear Damping
      • 1.4.18 Set Angular Damping
      • 1.4.19 Set Mass
      • 1.4.20 Set Collision Geometry
      • 1.4.21 Set Mass Offset
      • 1.4.22 Move
    • 1.5 CallChannel
  • 2 See Also

Newton Body Command

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.

Remaining child links are dependent on the selected command. Child parameters are shown in parenthesis after each option if required by the command.

Description

Provides a range of commands to alter body behaviour.

Interface

Command

One of the following commands to send to the body:

Reset

Resets the body. The body's matrix is set to the value of the Transformation child if linked and both the internal Force and Torque are cleared.

Set Force

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Force - Value Vector
    • A force vector that will be applied to the body at the next simulation update. External force is cleared after each simulation step or visual frame depending on the force mode.

Add Force

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Force - Value Vector
    • A force vector that will be accumulated and applied to the body at the next simulation update. External force is cleared after each simulation step or visual frame depending on the force mode.

Add Relative Force

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Force - Value Vector
    • A force vector relative to the body's orientation that will be accumulated and applied to the body at the next simulation update. External force is cleared after each simulation step or visual frame depending on the force mode.

Add Force at Point

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Force - Value Vector
    • A force vector that will be accumulated and applied to the body at the next simulation update. External force is cleared after each simulation step or visual frame depending on the force mode.
  3. Point - Value Vector
    • A point in world space where the force will be applied. Torque is generated when a force is applied away from the centre of mass.

Add Force at Relative Point

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Force - Value Vector
    • A force vector that will be accumulated and applied to the body at the next simulation update. External force is cleared after each simulation step or visual frame depending on the force mode.
  3. Relative Point - Value Vector
    • A point relative to the body's centre of mass where the force will be applied. Torque is generated when a force is applied away from the centre of mass.

Add Relative Force at Relative Point

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Relative Force - Value Vector
    • A force vector relative to the body's orientation that will be accumulated and applied to the body at the next simulation update. External force is cleared after each simulation step or visual frame depending on the force mode.
  3. Relative Point - Value Vector
    • A point relative to the body's centre of mass where the force will applied. Torque is generated when a force is applied away from the centre of mass.

Set Torque

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Torque - Value Vector
    • A vector of torque values that will be applied to the body at the next simulation update. External torque is cleared after each simulation step or visual frame depending on the force mode.

Add Torque

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Torque - Value Vector
    • A vector of torque values that will be applied to the body at the next simulation update. External torque is cleared after each simulation step or visual frame depending on the force mode.

Add Relative Torque

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Relative Torque - Value Vector
    • A vector of torque values relative to the body's orientation that will be accumulated and applied to the body at the next simulation update. External torque is cleared after each simulation step or visual frame depending on the force mode.

Set One-Step Force Mode

Change the body's force application to one-step mode. External forces and torques set using commands will only be applied to one pass of the simulation update; they will be cleared after the first pass. This mode ensures that a fixed amount of force is applied for each visual frame even if the frame rate differs.

Set One-Frame Force Mode

Change the body's force application to one-frame mode (the default). External forces and torques set using commands will be applied to all passes of the simulation update for the full frame. Forces will be cleared after the last pass. This can lead to inconsistent amounts of force being applied when the time, and therefore the number of passes to achieve the simulation frequency, differs between each frame.

Set Linear Velocity

Sets the body's velocity directly, overriding existing simulated values.

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Linear Velocity - Value Vector
    • New linear velocity of body.

Set Angular Velocity

Sets the body's angular velocity directly, overriding existing simulated values.

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Angular Velocity - Value Vector
    • New angular velocity of body.

Add Impulse

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Global Position - Value Vector
    • Position of the impulse centre in world coordinates.
  3. Velocity Delta - Value Vector
    • Desired change in velocity at the point of impulse.

Set Auto-sleep Threshold

Ideally, a body should be deactivated when it reaches a state of stable equilibrium. However, because of floating point inaccuracy, discrete time step simulation and other factors it is virtually impossible for a body to reach that state in real-time simulation. Therefore, a body is considered to be in stable equilibrium when its linear and angular velocity fall below some threshold for a consecutive number of frames.

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Speed Threshold - Value (0.01)
    • The minimum speed that will keep the body awake.
  3. Omega Threshold - Value (0.01)
    • The minimum omega speed (angular) that will keep the body awake.
  4. Simulation Steps - Value (10)
    • The number of consecutive simulation steps that speed must stay below the thresholds before the body will be put to sleep.

Set Linear Damping

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Linear Damping Coefficient - Value (0.1)
    • A value between zero and one that represents the air resistance acting against the movement of the specified body. There is also an internal damping value of 0.0001 that is used to maintain stability.

Set Angular Damping

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Angular Damping Coefficient - Value Vector (0.1,0.1,0.1)
    • Values between zero and one for the principle axis that represent the air resistance acting against the rotation of the specified body. As with linear damping there is also an internal damping value of 0.0001 that is used to maintain stability.

Set Mass

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Mass - Value (1.0)
    • The new mass of the body. A value of zero will set the body as static. A body can be switched between static and dynamic during runtime by setting the mass accordingly.

Set Collision Geometry

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Newton Collision Geometry - Newton Collision Geometry
    • Collision geometry to replace the existing set. This dramatic change has no other effect on the body.

Set Mass Offset

  1. Children
  2. Newton Body - Newton Body
    • The body to send the selected command to.
  3. Mass Offset - Value Vector
    • The relative position of the body's centre of mass.

Move

Sets the body matrix (equivalent to the Set Matrix Quest3D channel) and compensates for the movement by calculating and applying velocity based on the displacement between the current and new matrix. This allows static and dynamic bodies to be moved without the use of forces whilst still retaining correct dynamics. This is intended for specialist situations and should be used with care.

Children

  1. Newton Body - Newton Body
    • The body to send the selected command to.
  2. Position - Matrix
    • The new position and orientation of the body. This matrix must not include any scaling.

CallChannel

The selected command is executed when called.

See Also

  • Newton Body

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Body Matrix - Quest3D

Newton Body Matrix

Contents

  • 1 Newton Body Matrix
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
  • 2 See Also

Newton Body Matrix

Children

  1. Newton Body - Newton Body
    • The body to retrieve the matrix from.

Description

Retrieves the current matrix of the specified body. Use of this channel is necessary when the matrix is required from a channel that returns a reference to a Newton Body. In most cases, a body's matrix can be obtained directly from the Newton Body channel itself.

CallChannel

Calling this channel has no effect.

See Also

  • Newton Body

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Body Switch - Quest3D

Newton Body Switch

Contents

  • 1 Newton Body Switch
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
  • 2 See Also

Newton Body Switch

Children

  1. Selector - Value
    • Determines which of the linked Newton Body children will be returned when this channel is called.
    • A value of zero indicates the first body. The selector defaults to zero if no value is given.
  2. Newton Body - Newton Body
    • An unlimited number of Newton Body channels one of which will be “selected” as above.

Description

A version of the built-in “Channel Switch” channel with a base type of Newton Body.

CallChannel

The selected command is executed when called.

See Also

  • Newton Body

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Body Value - Quest3D

Newton Body Value

Contents

  • 1 Newton Body Value
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Mass
      • 1.4.2 Sleeping?
    • 1.5 CallChannel
  • 2 See Also

Newton Body Value

Children

  1. Newton Body - Newton Body
    • The body to retrieve the value from.

Description

Retrieves selectable value information from the specified body.

Interface

Properties

One of the following value types to retrieve:

Mass

The current mass of the body

Sleeping?

A boolean value to show if the body is sleeping

CallChannel

Calling this channel has no effect.

See Also

  • Newton Body

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Body Vector - Quest3D

Newton Body Vector

Contents

  • 1 Newton Body Vector
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Lineair Velocity
      • 1.4.2 Angular Velocity
      • 1.4.3 Relative Lineair Velocity
      • 1.4.4 Relative Angular Velocity
      • 1.4.5 Force
      • 1.4.6 Torque
    • 1.5 CallChannel
  • 2 See Also

Newton Body Vector

Children

  1. Newton Body - Newton Body
    • The body to retrieve the vector from.

Description

Retrieves selectable vector information from the specified body.

Interface

Properties

One of the following vector types to retrieve:

Lineair Velocity

The current linear velocity in global coordinates.

Angular Velocity

The current angular velocity in global coordinates.

Relative Lineair Velocity

The current linear velocity relative to the bodie's orientation.

Relative Angular Velocity

The current angular velocity relative to the bodie's orientation.

Force

The force applied to the body after the last update.

Torque

The torque applied to the body after the last update.

CallChannel

Calling this channel has no effect.

See Also

  • Newton Body

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Collision Compound - Quest3D

Newton Collision Compound

Contents

  • 1 Newton Collision Compound
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Collision Compound

Children

  1. Collision Primitives - Newton Collision Primitive
    • An unlimited number of collision primitives that will form a single piece of collision geometry.

Description

Enables the merging of collision primitives to form a single, rigid shape which can be assigned to a body in the usual way.

CallChannel

Calling this channel has no effect.

Remarks

  • The parent body's Mass Offset is automatically set to the centre of the resulting shape.

Templates

Examples

example

See Also

  • Newton Collision Geometry

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Collision Convex Hull - Quest3D

Newton Collision Convex Hull

Contents

  • 1 Newton Collision Convex Hull
    • 1.1 Children
    • 1.2 Description
    • 1.3 Editing
    • 1.4 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Collision Convex Hull

Children

  1. 3D Object - 3D Object
    • Source data for generating the convex shape. This 3D Object may contain any number of surfaces but must have at least 4 vertices.

Description

Creates a convex collision shape from a 3D Object. The following image shows the convex shape generated from the Utah Teapot source data.

The Render Geometry tool on the Newton Body interface can be used to view the generated geometry.

Editing

Collision geometry is automatically recreated if a change is detected in the linked 3D Object child.

CallChannel

Calling this channel has no effect.

Remarks

  • The parent body's Mass Offset is automatically set to the centre of the resulting shape.
  • The convex data is generated from new when the parent body is created. It is not saved in the channel.

Templates

Examples

example

See Also

  • Newton Collision Geometry

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Collision Geometry - Quest3D

Newton Collision Geometry

Contents

  • 1 Newton Collision Geometry
    • 1.1 Description
    • 1.2 Children
    • 1.3 Subtypes
  • 2 See Also

Newton Collision Geometry

Description

A base channel for all collision geometry sub-types. Collision geometry defines the shape of a body within the simulation.

Children

none

Subtypes

Newton Collision Primitive A range of 3D primitives. Often used in conjunction with a Newton Collision Compound parent.

Newton Collision Compound Enables grouping of Newton Collision Primtives to form one collision shape.

Newton Collision Convex Hull Creates convex collision shapes from a 3D Object.

Newton Collision Tree Converts a 3D Object into precise collision tree geometry. For static bodies only.

See Also

  • Newton Collision Primitive
  • Newton Collision Compound
  • Newton Collision Convex Hull
  • Newton Collision Tree

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Collision Primitive - Quest3D

Newton Collision Primitive

Contents

  • 1 Newton Collision Primitive
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Box
      • 1.4.2 Capsule
      • 1.4.3 Chamfered Cylinder
      • 1.4.4 Cone
      • 1.4.5 Cylinder
      • 1.4.6 Sphere
    • 1.5 Editing
    • 1.6 CallChannel
  • 2 Remarks
  • 3 See Also

Newton Collision Primitive

Children

  1. Offset - Matrix
    • Collision shape can be transformed in position, rotation and scale. Position is defined relative to the centre of the parent body.

Description

A range of primitive shapes to use as collision geometry for the parent body or as part of a set for a parent Newton Collision Compound.

Interface

Properties

One of the following 3D primitive shapes:

Box

Box image.

Capsule

Capsule image.

Chamfered Cylinder

Chamfered Cylinder image.

Cone

Cone image.

Cylinder

Cylinder image.

Sphere

Sphere image.

Editing

Changes to the offset child or any of the properties will cause an immediate replacement of the parent body's collision geometry even when the simulation is running.

CallChannel

Calling this channel has no effect.

Remarks

  • All primitives are axis-aligned with the built-in 3D primitives.
  • Rendering of the parent body's collision geometry should be switched on to help when assigning geometry.
  • Primitives of the same dimensions are shared internally regardless of how many channels they are defined in.

See Also

  • Newton Collision Geometry

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Collision Tree - Quest3D

Newton Collision Tree

Contents

  • 1 Newton Collision Tree
    • 1.1 Children
    • 1.2 Description
    • 1.3 Editing
    • 1.4 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Collision Tree

Children

  1. 3D Object - 3D Object
    • Source data for generating the tree. This 3D Object may contain any number of surfaces but all polygons must be flat and non-intersecting.

Description

Converts a 3D Object polygon mesh into precise collision tree geometry. This type of collision geometry can only be used for static bodies.

The generated tree is not currently serialised and saved in this channel but it will be in order to remove conversion times.

Editing

Collision geometry is automatically recreated if a change is detected in the linked 3D Object child.

CallChannel

Calling this channel has no effect.

Remarks

Templates

Examples

example

See Also

  • Newton Collision Geometry

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Command - Quest3D

Newton Command

Contents

  • 1 Newton Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Commands
      • 1.4.1 Play
      • 1.4.2 Pause
      • 1.4.3 Stop
      • 1.4.4 Reset
      • 1.4.5 Set Frequency
      • 1.4.6 Set Gravity
      • 1.4.7 Set Solver Exact
      • 1.4.8 Set Solver Adaptive
      • 1.4.9 Set Solver Lineair
      • 1.4.10 Set Friction Exact
      • 1.4.11 Set Friction Adaptive
      • 1.4.12 Disable Auto-update
      • 1.4.13 Update
      • 1.4.14 Set World Size
    • 1.5 CallChannel

Newton Command

Children

Child links are dependent on the selected command. Child parameters are shown in parenthesis after each option if required by the command.

Description

A range of commands to control and alter the simulation.

Interface

Commands

One of the following commands can be set to control the simulation:

Play

Enables simulation updates.

Pause

Suspend simulation updates. Pauses the simulation only; external forces applied wit hthe Newton Body Command channel are still accumulated.

Stop

Stop updates and reset the simulation.

Reset

Reset the entire simulation. Effectively sends a reset command to all bodies.

Set Frequency

Children

  1. Frequency - Value (120)
    • The number of simulation updates to execute per second. The higher this value, the smoother the simulation will run but leaving less time for other operations.

Set Gravity

Children

  1. Gravity - Value Vector (0,-9.8,0)
    • A vector representing the gravitation force applied to all bodies in the simulation.

Set Solver Exact

Sets the solver to exact. Precision reigns over speed in this mode. This is the recommended and default setting.

Set Solver Adaptive

Sets the solver to adaptive; not as precise as the exact mode but the simulation will still maintain a high degree of accuracy. This mode is faster than the exact solver.

Set Solver Lineair

Sets the solver to linear. This model will only perform up to the specified number of passes when reducing relative acceleration errors even if some error remains. This is the fastest solver mode.

Children

  1. Passes - Value
    • The maximum number of passes to perform; fewer = faster but also resulting in less accuracy and a greater propensity to joint explosions. This value must be greater than 1.

Set Friction Exact

Sets the friction model to exact Coulomb. Frictional forces are calculated independently for each frame. This is the recommended and default setting.

Set Friction Adaptive

Sets the friction model to adaptive Coulomb. The previous frame is used to determine frictional forces . This mode is generally 10% faster than the exact mode but can result in unusual friction behaviour if there is no continuity in a body's movement.

Disable Auto-update

Disables the automatic physics update which occurs at the beginning of each visual frame as standard. The update can then be invoked at any time by the application using the Update command.

Update

Runs an update of the physics simulation. Updates occur automatically as standard but can be disabled using the Disable Auto-update command. A single update will run multiple passes in line with the frequency setting.

Set World Size

Changes the size of the world. Bodies that move outside of the specified bounding box will be disabled. The world size effects performance so it should not be set any bigger than required.

Children

  1. Bounding Box Minimum Point - Value Vector (-100,-100,-100)
    • The minimum point of the world bounding box.
  2. Bounding Box Maximum Point - Value Vector (100,100,100)
    • The maximum point of the world bounding box.

CallChannel

The selected command is executed when called.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Contact Behaviour - Quest3D

Newton Contact Behaviour

Contents

  • 1 Newton Contact Behaviour
    • 1.1 Description
    • 1.2 Sub-types
  • 2 Examples
  • 3 See Also

Newton Contact Behaviour

Description

An abstract base channel for behaviours that can be assigned to a material relationship in order to manipulate contacts between bodies.

Sub-types

Newton Contact Event Fires an event for every pair of colliding bodies assigned the materials of the parent relationship.

Examples

example

See Also

  • Newton Contact Event
  • Newton Material Contact

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Contact Body - Quest3D

Newton Contact Body

Contents

  • 1 Newton Contact Body
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
  • 2 See Also

Newton Contact Body

Children

  1. Body Index - Value
    • Index of the body pair to retrieve. 0 for the first body or 1 for the second.

Description

Retrieves a reference to either of the bodies involved in a collision. Only relevant when called as part of the Event child of a Newton Contact Event channel in order to identify the bodies that triggered the event.

CallChannel

Calling this channel has no effect.

See Also

  • Newton Body
  • Newton Contact Event

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Contact Event - Quest3D

Newton Contact Event

Contents

  • 1 Newton Contact Event
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
  • 2 Remarks
  • 3 See Also

Newton Contact Event

Children

  1. Event - All Types
    • Logic that will be called for each pair of colliding bodies.

Description

Fires an event for every pair of colliding bodies assigned the materials of the parent relationship.

CallChannel

The event child will be executed for every pair of bodies that collided during the last frame.

Remarks

  • The event only fires once for each pair of bodies regardless of how many actual contacts occurred.
  • Events are not fired as they happen. All contacts are pooled during the simulation update and processed only when the channel is called. An additional behaviour may be developed which will fire events as they happen.

See Also

  • Newton Contact Behaviour

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Contact Value - Quest3D

Newton Contact Value

Contents

  • 1 Newton Contact Value
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Number of Contacts
      • 1.4.2 Greatest Impact Speed
      • 1.4.3 Greatest Sliding Speed
      • 1.4.4 Greatest Repulsion Speed
      • 1.4.5 Contact? (Newton Body, Newton Body)
      • 1.4.6 Contact? (Newton Body, Newton Material)
    • 1.5 Commands
    • 1.6 CallChannel
  • 2 Remarks
  • 3 See Also

Newton Contact Value

Children

  1. Body One - Newton Body
    • First body of the pair to retrieve data on.

Optional if used in conjunction with Newton Contact Event in which case data is retrieved for the two bodies that triggered the event.

Description

Retrieves contact values for the specified bodies or bodies that triggered a contact event. Contact data is only available once a Newton Material Contact relationship has been defined.

Interface

Properties

One of the following contact values to return:

Number of Contacts

The number of contacts between the two bodies since the last frame.

Greatest Impact Speed

The greatest impact speed recorded between the two bodies since the last frame. A resting contact will have an impact speed of zero. There can still be sliding speed in these situations.

Greatest Sliding Speed

The greatest sliding speed between the two bodies since the last frame. Sliding speed is the speed that the two bodies are moving across each other also known as tangent speed.

Greatest Repulsion Speed

The greatest repulsion speed between the two bodies since the last frame. A negative value showing the speed that the bodies are moving away from each other after a collision. Repulsions occur immediately after impact. Both impact and repulsion could have occurred since the last frame.

Contact? (Newton Body, Newton Body)

A Boolean value indicating whether the two bodies collided during the last frame.

Contact? (Newton Body, Newton Material)

A Boolean value indicating whether the body collided with any other body of the specified material during the last frame.

Commands

One of the following commands can be set to control the simulation:

CallChannel

Calling this channel has no effect.

Remarks

  • The order of the body children does not matter. For example, linking Box and Sphere would retrieve collision data if Box hit Sphere or vice-versa.

See Also

  • Newton Body
  • Newton Contact Event
  • Newton Material
  • Newton Material Contact

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Contact Vector - Quest3D

Newton Contact Vector

Contents

  • 1 Newton Contact Vector
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Greatest Impact Speed - Position
      • 1.4.2 Greatest Impact Speed - Normal
    • 1.5 Commands
    • 1.6 CallChannel
  • 2 Remarks
  • 3 See Also

Newton Contact Vector

Children

  1. Body One - Newton Body
    • First body of the pair to retrieve data on.
    • Optional if used in conjunction with Newton Contact Event in which case data is retrieved for the two bodies that triggered the event.
  2. Body Two - Newton Body
    • Second body of the pair to retrieve data on.
    • Optional if used in conjunction with Newton Contact Event in which case data is retrieved for the two bodies that triggered the event.

Description

Retrieves contact vectors for the specified bodies or bodies that triggered a contact event. Contact data is only available once a Newton Material Contact relationship has been defined.

Interface

Properties

One of the following contact vectors to return:

Greatest Impact Speed - Position

The position of the greatest impact between the two bodies since the last frame.

Greatest Impact Speed - Normal

The normal of the greatest impact between the two bodies since the last frame. This normal is a unit vector perpendicular to the point of contact between the two bodies.

Commands

One of the following commands can be set to control the simulation:

CallChannel

Calling this channel has no effect.

Remarks

  • The order of the body children does not matter. For example, linking Box and Sphere would retrieve collision data if Box hit Sphere or vice-versa.

See Also

  • Newton Body
  • Newton Contact Event
  • Newton Material Contact

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Hinge - Quest3D

Newton Hinge

Contents

  • 1 Newton Hinge
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Lock joint if max torque exceeded
    • 1.5 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Hinge

Image is courtesy of Newton Game Dynamics

Children

  1. Parent Body - Newton Body
    • Optional first body of the pair to join. Can be a dynamic or static body. If this child is left unconnected the child body is joined to a fixed position in the world.
  2. Child Body - Newton Body
    • Second body of the pair to join. This body must be specified.
  3. Pivot Point - Value Vector
    • The origin of the joint relative to the child body's position at the time the joint is created.
  4. Pin Direction - Value Vector (0,1,0)
    • A unit vector representing the line of action. Literally, the direction of the pin holding the two parts of the hinge together.
  5. Min Angle - Value
    • Minimum angle that the hinge can reach in degrees. Must be less than max angle. There will be no minimum restriction if this child is left unconnected.
  6. Max Angle - Value
    • Maximum angle that the hinge can reach in degrees. Must be greater than min angle. There will be no maximum restriction if this child is left unconnected.
  7. Angle - Value
    • Desired angle of the hinge in degrees. Effectively, motor control. Connected bodies will only move if not sleeping.
  8. Torque - Value
    • Torque is automatically applied to the hinge in order to obey the specified angle. This optional value limits the amount of torque that the hinge motor can generate. This can prevent the desired angle from being reached or even result in the hinge giving way if a greater external force is exerted. The Lock joint setting alters this behaviour by locking the hinge position if the required torque is greater than this maximum. In other words, it won't allow the joint to give way.
    • If this value is unspecified then the desired angle will always be reached.

Description

The hinge joint restricts connected bodies to one degree of freedom around the specified pin.

Interface

Properties

Lock joint if max torque exceeded

Boolean

Relevant if the angle and maximum torque child values are set.

True: The joint angle will remain at its current value if the torque required to reach the angle exceeds the specified maximum. This effectively locks the joint position.

False: Required torque will be restricted to the specified maximum allowing the joint some movement.

CallChannel

The joint is created when called.

Remarks

  • The joint can become slightly unstable if required torque is restricted by the maximum torque setting when an external force is exerted on the joint. This may be improved in future releases.

Templates

Examples

example

See Also

  • Newton Joint

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Joint - Quest3D

Newton Joint

Contents

  • 1 Newton Joint
    • 1.1 Description
    • 1.2 Sub-Types
  • 2 Remarks
  • 3 See Also

Newton Joint

Description

A base channel for all joint sub-types. Joints constrain a body or bodies to various planes in relation to each other or a point in the world.

Sub-Types

  • Newton Ball and Socket
  • Newton Hinge
  • Newton Slider
  • Newton UpVector
  • Newton Motor

Remarks

  • All pivots are relative to the position of the child body at the time the joint is created. It is therefore important to ensure that the bodies are in the required positions when the channel is first called or the interface Create button is pressed. Remember that a joint can easily be destroyed during editing via the interface Destroy button to allow easy experimentation.
  • Joint child values are fully dynamic so alterations to any value will take immediate effect without recreating the joint.

See Also

  • Newton Ball and Socket
  • Newton Hinge
  • Newton Slider
  • Newton UpVector
  • Newton Motor

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Joint Command - Quest3D

Newton Joint Command

Contents

  • 1 Newton Joint Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Commands
      • 1.4.1 Destroy
    • 1.5 CallChannel
  • 2 See Also

Newton Joint Command

Children

  1. Newton Joint - Newton Joint
    • The joint to send the selected command to.

Remaining child links are dependent on the selected command. Child parameters are shown in parenthesis after each option if required by the command.

Description

Provides a range of commands to alter joint behaviour.

Interface

Commands

One of the following commands to send to the Newton Joint:

Destroy

Destroys the joint. The joint will be recreated when next accessed.

CallChannel

The selected command is executed when called.

See Also

  • Newton Joint

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Material - Quest3D

Newton Material

Contents

  • 1 Newton Material
    • 1.1 Description
    • 1.2 CallChannel
  • 2 Remarks

Newton Material

Description

An identifier for a material that can be assigned to multiple bodies. This simple channel is merely a container for a unique id and has no functionality.

A material has no properties on its own; properties only exist when two materials interact. This relationship between material pairs can be defined using the Newton Material Contact channel.

If nothing is linked to any channel that accepts a material then an internal default material is used.

CallChannel

Calling this channel has no effect.

Remarks

  • It is best to create a pool of materials and use shortcuts when assigning to bodies to ensure that only one material exists for each type.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Material Contact - Quest3D

Newton Material Contact

Contents

  • 1 Newton Material Contact
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Collidable
      • 1.4.2 Elasticity
      • 1.4.3 Softness
      • 1.4.4 Static Friction
      • 1.4.5 Kinetic Friction
    • 1.5 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Material Contact

Children

  1. Material One - Newton Material
    • First material of the pair. The default material is used if none linked.
  2. Material Two - Newton Material
    • Second material of the pair. The default material is used if none linked.
  3. Contact Behaviour - Newton Contact Behaviour
    • Optional behaviour module to apply to contacts between bodies assigned the two materials.

Description

Defines the relationship and behaviour between two Newton Materials.

Interface

Properties

Collidable

Boolean (true) True: Contacts will occur between bodies assigned the two material children.

False: There will be no contact between bodies assigned the two material children. Bodies will pass through each other.

Elasticity

Value (0.4) The coefficient of restitution, more commonly known as elasticity. Set to 0.0 for perfectly inelastic collisions and 1.0 for perfectly elastic collisions.

Softness

Value (0.05) The coefficient of softness. Low values will result in the softest contact. 1.0 is the maximum but much lower values are recommended.

Static Friction

Value (1.0) The coefficient of static friction. The amount of resistance that keeps a static body from starting to slide across another.

Must be a positive value greater than kinetic friction and less than 2.0. However, most natural materials have coefficients less than 1.0.

Example static friction coefficients can be found on the Internet.

Kinetic Friction

Value (0.5) The coefficient of kinetic friction. The amount of resistance against a moving body sliding across another.

Must be a positive value less than static friction.

Example kinetic friction coefficients can be found on the Internet.

CallChannel

Certain Newton Contact Behaviours will be executed when this channel is called.

Remarks

Templates

Examples

  • Materials
  • Contact Statistics
  • Contact Behaviour

See Also

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Motor - Quest3D

Newton Motor

Contents

  • 1 Newton Motor
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Lock joint if max force exceeded
    • 1.5 CallChannel
  • 2 See Also

Newton Motor

Children

  1. Body - Newton Body
    • Newton Body where this joint applies to.
  2. Origin - Value Vector (0,0,0)
    • The body's origin.
  3. Direction - Value Vector (0,1,0)
    • A unit vector representing the axis of movement.
  4. Velocity - Value
    • The desired velocity in m/s.
  5. Max Force - Value
    • Maximum amount of force to be applied to get the desired velocity.

Description

The motor joint allows a Newton Body to move along a specified directional axis with a constant velocity.

Interface

Properties

Lock joint if max force exceeded

Boolean

Relevant if the offset and maximum force child values are set.

  • True: The joint offset will remain at its current value if the force required to reach the offset exceeds the specified maximum. This effectively locks the joint position.
  • False: Required force will be restricted to the specified maximum allowing the joint some movement.

CallChannel

The joint is created when called.

See Also

  • Newton Joint

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Point Rope - Quest3D

Newton Point Rope

Contents

  • 1 Newton Point Rope
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Behaviour
      • 1.4.2 Damping
      • 1.4.3 Line Visualisation
      • 1.4.4 Object Visualisation
    • 1.5 CallChannel
  • 2 Remarks
  • 3 See Also

Newton Point Rope

Children

  1. Number of Bodies - Value
    • Number of rope segments.
  2. Material - Newton Material
    • Assigns a material to the rope body segments.
    • The default material is used if a child is not linked.
  3. 3D Object - 3D ObjectData
    • Rope segment model.
  4. Radius - Value
    • Radius of the newton body segments - used for collision detection.
  5. Unit Mass - Value
    • The mass of a rope segment, where the rope's total mass is calculated like this: <math>Rope mass = Unit Mass * Number of Bodies</math>
  6. Rope Information -Value Vectors
    • The points that define the rope.

Description

Similar to the Newton Rope channel, this channel creates a series of newton Bodies linked together using Newton Ball and Socket joints, but uses the gives "Rope Information" (a collection of points in 3D space) to draw the rope.

Interface

NewtonPointRope.png

Properties

Behaviour

  • Cone Limit - Value (0)

Set the joint's cone limit constraint in degrees, where:

0 - Cone limit constraint is disabled;

1-360 - Angle of cone constraint.

  • Twist Limit - Value (0)

Set the joint's twist limit around the segment axis (pindirection), where:

0 - Twist limit constraint is disabled;

1-360 - Angle of twist constraint.

  • Elasticity - Value (0.2)

In rope terms, Newton's elasticity/stiffness is actually how much give there is between each rope segment.

  • Stiffness - Value (0)

This property is disabled and calculated internally using the elasticity value, where:

<math>Stiffness = 1 - Elasticity</math>

Damping

  • Linear - Value (0.1)

Apply the linear viscous damping coefficient to the rope segments.

  • Angular - Value (0.1)

Apply the angular viscous damping coefficient to the rope segments.

Line Visualisation

  • Centre to Centre - Boolean (true)

Render the rope segments centered on the rope points. If this property is disabled the top of the rope segment visual will coincide with the rope (matrix) point.

  • Interpolation - Value (0)

If greater than 0 the rope curve will be defined using a Catmull-rom spline, where the recursive depth is defined by this value parameter.

Object Visualisation

  • Visualization - Check Box

Defines the way the 3D object data is rendered on the rope lineparts. where:

- As Is - Use the 3d object data for the entire rope; (default)

- Resize to fit - Use the 3d object data for the entire rope, but size it correctly using the rope's length;

- Repeat - Use the 3d object data for each body segment (mainly used in shackle-based ropes like chains, etc).

  • Rotate Alternate - Boolean (false)

If the "repeat" flag is true, the alternating rope segements will be rotated to represent chain.

Limits should be defined to retain chain-like behaviour (restricted twist etc.)

CallChannel

The rope is created when called.

Remarks

  • Rope cone and twist limits can only be specified at the time of creation;
  • The Object Visualisation Resize option only works for unit-length objects at present;
  • The rope channel can become unstable when more than 200 rope segments are used;
  • Using full body collision on the rope is a real performance killer and should be avoided when working with a large number of ropes.

(The trick here is to define a rope material and contact event and disable the rope body-to-body collision).

See Also

  • Newton Rope
  • Newton Point Rope Body Accessor

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Point Rope Body Accessor - Quest3D

Newton Point Rope Body Accessor

Contents

  • 1 Newton Point Rope Body Accessor
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 First Body
      • 1.2.2 Last Body
      • 1.2.3 Body Index
    • 1.3 Interface
    • 1.4 CallChannel
  • 2 See Also

Newton Point Rope Body Accessor

Children

Child links are dependent on the selected command. Child parameters are shown in parenthesis after each option if required by the command.

Description

Similar to the Newton Rope Body Accessor, but for the Point Rope channel. Returns a rope segment based on the following commmands:

First Body

The first rope segment.

Last Body

The last rope segment.

Body Index

The rope segment at index X.

Children

  1. Index - Value
    • Rope body index specifier.

Interface

CallChannel

Returns the Newton Body specified.

See Also

  • Newton Point Rope

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Rope - Quest3D

Newton Rope

Contents

  • 1 Newton Rope
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 Properties
      • 1.4.1 Behaviour
      • 1.4.2 Damping
      • 1.4.3 Line Visualisation
      • 1.4.4 Object Visualisation
    • 1.5 CallChannel
  • 2 Remarks
  • 3 Examples
  • 4 See Also

Newton Rope

Children

  1. Length - Value
    • Length of the Newton Rope.
  2. Number of Bodies - Value
    • Number of rope segments.
  3. Material - Newton Material
    • Assigns a material to the rope body segments.
    • The default material is used if a child is not linked.
  4. 3D Object - 3D ObjectData
    • Rope segment model.
  5. Transformation - Matrix
    • Rope origin and orientation.
  6. Radius - Value
    • Radius of the newton body segments - used for collision detection.
  7. Unit Mass - Value
    • The mass of a rope segment, where the rope's total mass is calculated like this: <math>Rope mass = Unit Mass * Number of Bodies</math>

Description

The Newton Rope channel creates a series of Newton Bodies (segments) linked together using Newton Ball and Socket joints to create a representation of a rope.

Note that the rope will be rendered from the rope origin to origin+length in the positive X-axis (objectspace). So in order to let a rope 'hang down' you'll have to give a -90 rotation on the Z axis in the transformationmatrix.

Interface

Missing Documentation.
TODO: replace with 4.0 variant (without radius + mass properties)

Properties

Behaviour

  • Cone Limit - Value (0)

Set the joint's cone limit constraint in degrees, where:

0 - Cone limit constraint is disabled;

1-360 - Angle of cone constraint.

  • Twist Limit - Value (0)

Set the joint's twist limit around the segment axis (pindirection), where:

0 - Twist limit constraint is disabled;

1-360 - Angle of twist constraint.

  • Elasticity - Value (0.2)

In rope terms, Newton's elasticity/stiffness is actually how much give there is between each rope segment.

  • Stiffness - Value (0)

This property is disabled and calculated internally using the elasticity value, where:

<math>Stiffness = 1 - Elasticity</math>

Damping

  • Linear - Value (0.1)

Apply the linear viscous damping coefficient to the rope segments.

  • Angular - Value (0.1)

Apply the angular viscous damping coefficient to the rope segments.

Line Visualisation

  • Centre to Centre - Boolean (true)

Render the rope segments centered on the rope points. If this property is disabled the top of the rope segment visual will coincide with the rope (matrix) point.

  • Interpolation - Value (0)

If greater than 0 the rope curve will be defined using a Catmull-rom spline, where the recursive depth is defined by this value parameter.

Object Visualisation

  • Visualization - Check Box

Defines the way the 3D object data is rendered on the rope lineparts. where:

- As Is - Use the 3d object data for the entire rope; (default)

- Resize to fit - Use the 3d object data for the entire rope, but size it correctly using the rope's length;

- Repeat - Use the 3d object data for each body segment (mainly used in shackle-based ropes like chains, etc).

  • Rotate Alternate - Boolean (false)

If the "repeat" the alternating rope segements will be rotated to represent chain.

Limits should be defined to retain chain-like behaviour (restricted twist etc.)

CallChannel

The rope is created when called.

Remarks

  • Rope cone and twist limits can only be specified at the time of creation;
  • The Object Visualisation Resize option only works for unit-length objects at present;
  • The rope channel can become unstable when more than 200 rope segments are used;
  • Using full body collision on the rope is a real performance killer and should be avoided when working with a large number of ropes.

(The trick here is to define a rope material and contact event and disable the rope body-to-body collision).

Examples

  • heavy_ball_and_chain: A 1000kg ball linked to a 1000kg chain demonstrate resilience and a good chain representation.
  • drag_rope: The interpolation feature for line drawing is used here on a long rope with few bodies to improve speed.
  • wire_guide: A very stiff wire slips through a guide. The wire is so stiff that it is pulled tight against the sides of the guide and won't move until the weight angles it through.

See Also

  • Newton Rope Body Accessor

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0 | Incomplete


Newton Rope Body Accessor - Quest3D

Newton Rope Body Accessor

Contents

  • 1 Newton Rope Body Accessor
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 First Body
      • 1.2.2 Last Body
      • 1.2.3 Body Index
    • 1.3 Interface
    • 1.4 CallChannel
  • 2 See Also

Newton Rope Body Accessor

Children

Child links are dependent on the selected command. Child parameters are shown in parenthesis after each option if required by the command.

Description

Returns a rope segment based on the following commmands:

First Body

The first rope segment.

Last Body

The last rope segment.

Body Index

The rope segment at index X.

Children

  1. Index - Value
    • Rope body index specifier.

Interface

CallChannel

Returns the Newton Body specified.

See Also

  • Newton Rope

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Newton | Dynamics | New in version 4.0


Newton Slider - Quest3D

Newton Slider

Contents

  • 1 Newton Slider
    • 1.1 Image is courtesy of Newton Game Dynamics
    • 1.2 Children
    • 1.3 Description
    • 1.4 Interface
    • 1.5 Properties
      • 1.5.1 Lock joint if max force exceeded
    • 1.6 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Slider

Image is courtesy of Newton Game Dynamics

Children

  • Parent Body - Newton Body

Optional first body of the pair to join. Can be a dynamic or static body. If this child is left unconnected the child body is constrained around a fixed position in the world.

  • Parent Body - Newton Body

gravity description

  • Child Body - Newton Body

Second body of the pair to join. This body must be specified.

  • Pivot Point - Value Vector

The origin of the constraint relative to the child body's position at the time the joint is created. The default of the child body's origin is usually the desired setting.

  • Pin Direction - Value Vector (0,1,0)

A unit vector representing the axis of movement.

  • Min Offset - Value

Minimum offset that the slider can reach. Must be less than max offset. There will be no minimum restriction if this child is left unconnected.

  • Max Offset - Value

Maximum offset that the slider can reach. Must be greater than min offset. There will be no maximum restriction if this child is left unconnected.

  • Offset - Value

Desired offset along the axis and relative to the starting position of the child body. Effectively, hydraulic control. Connected bodies will only move if not sleeping.

  • Max Force - Value

Force is automatically applied to the slider in order to obey the specified offset. This optional value limits the amount of force that the slider motor can generate. This can prevent the desired offset from being reached or even result in the slider giving way if a greater external force is exerted. The Lock joint setting alters this behaviour by locking the slider position if the required force is greater than this maximum. In other words, it won't allow the joint to give way.

If this value is unspecified then the desired offset will always be reached.

Description

The slider joint constrains bodies together along a specified directional axis.

Interface

Properties

Lock joint if max force exceeded

Boolean

Relevant if the offset and maximum force child values are set.

True: The joint offset will remain at its current value if the force required to reach the offset exceeds the specified maximum. This effectively locks the joint position.

False: Required force will be restricted to the specified maximum allowing the joint some movement.

CallChannel

The joint is created when called.

Remarks

Templates

Examples

example

See Also

  • Newton Joint


Tutorials/Newton tutorials - Quest3D

Tutorials/Newton tutorials

< Tutorials(Redirected from Newton tutorials)
Jump to: navigation, search

Contents

  • 1 Newton Game Dynamics for Quest3D
    • 1.1 Introduction
    • 1.2 Important
    • 1.3 Tutorials

Newton Game Dynamics for Quest3D

Introduction

Quest3D 4.0 introduces support for the Newton Game Dynamics engine. Although the name of this physics engine does probably make you presume that it is meant for games, you can use it for all kinds applications that need physics simulation.

The physics support was formerly known as 'Newton for Quest' and owned by Simon Sadler. He gave a tutorial about it on the Quest3D Conference 2006 in Wiesbaden, Germany. Below, you will find the video tutorials you will need to get a kick start on using the Newton Channels.

Important

At this very moment, the videos are in DivX 5 format, of which you can download the codecs here. An alternative is to view the videos with VLC media player.

Tutorials

01 - Simple start | video | example
02 - Primitives | video |
03 - Collision Compound | video | example
04 - Convex Hull | video | example
05 - Collision Tree | video | example
06 - Centre of Mass | video | example
07 - Dynamic Editing | video |
08 - Hinge Joint | video | example
09 - Ball and Socket | video | example
10 - Slider Joint | video | example
11 - Up Vector Constraint | video | example
12 - PoweredJoints | video |
13 - Materials | video | example
14 - Contact Statistics | video | example
15 - Contact Behaviour | video | example


Tutorials/Newton tutorials - Quest3D

Tutorials/Newton tutorials

< Tutorials
Jump to: navigation, search

Contents

  • 1 Newton Game Dynamics for Quest3D
    • 1.1 Introduction
    • 1.2 Important
    • 1.3 Tutorials

Newton Game Dynamics for Quest3D

Introduction

Quest3D 4.0 introduces support for the Newton Game Dynamics engine. Although the name of this physics engine does probably make you presume that it is meant for games, you can use it for all kinds applications that need physics simulation.

The physics support was formerly known as 'Newton for Quest' and owned by Simon Sadler. He gave a tutorial about it on the Quest3D Conference 2006 in Wiesbaden, Germany. Below, you will find the video tutorials you will need to get a kick start on using the Newton Channels.

Important

At this very moment, the videos are in DivX 5 format, of which you can download the codecs here. An alternative is to view the videos with VLC media player.

Tutorials

01 - Simple start | video | example
02 - Primitives | video |
03 - Collision Compound | video | example
04 - Convex Hull | video | example
05 - Collision Tree | video | example
06 - Centre of Mass | video | example
07 - Dynamic Editing | video |
08 - Hinge Joint | video | example
09 - Ball and Socket | video | example
10 - Slider Joint | video | example
11 - Up Vector Constraint | video | example
12 - PoweredJoints | video |
13 - Materials | video | example
14 - Contact Statistics | video | example
15 - Contact Behaviour | video | example


Newton Up Vector - Quest3D

Newton Up Vector

Newton Up Vector

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Incomplete


Newton UpVector - Quest3D

Newton UpVector

Contents

  • 1 Newton Up Vector
    • 1.1 Children
    • 1.2 Description
    • 1.3 Interface
    • 1.4 CallChannel
  • 2 Remarks
  • 3 Templates
  • 4 Examples
  • 5 See Also

Newton Up Vector

Children

  • Parent Body - Newton Body

Body to which the axis constraint will be applied

  • Pin Direction - Value Vector (0,1,0)

A unit vector representing the line of action. Literally, the axis that will be constrained

Description

This specialized vector can be used to limit rotation to one axis of freedom for rigid bodies. It's mostly used if you use e.g. a sphere to create a character controller and don't want that sphere to "fall" forwards. It's like if you want an egg to stand still upwards on the table but still be able to rotate it on the y-axis and move it around.

Interface

CallChannel

The joint is created when called.

Remarks

Templates

Examples

example

See Also

Newton Joint


NotInEditor - Quest3D

NotInEditor

Contents

  • 1 NotInEditor
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

NotInEditor

General

Detects if you are running this channelgroup in the editor

Children

none

Description

This channel will detect whether you are running the current channelgroup in the editor. If you are, its value will be set to 1 (one), if not the value will be set to 0 (zero).

CallChannel

Has no effect

Applications

  • Use this channel to prevent the editor from calling the Present channel because this will result a strange screen flickering.
  • Also prevent the GoFullScreen from being called in the editor or else you won't be able to reach the editor.
  • There are several templates available with this channel correctly used on above mentioned channels.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Reference Manual/Editor/Object Section/Object 3D View - Quest3D

Reference Manual/Editor/Object Section/Object 3D View

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Contents

  • 1 Object 3D View
    • 1.1 General
    • 1.2 Controls:
    • 1.3 Toolbar Buttons

Object 3D View

General

This window shows the selected object. You can select a surface by clicking in the window. The highlighted surface is surrounded by a blue box. If one surface is selected it is surrounded by a yellow box.

The background color can be changed in the "Options" -> "Preferences..." menu. By default the background is neutral gray. There is also a grid displayed that for object orientation. This grid can be turned off with a toolbar button.

Before an object is shown in this window an object must be selected in the Object List window. Please note that when the object is shown in this window, it is rescaled and centered to fit in the window. The actual motion of the object is ignored.

Controls:

  • Orbit center - Alt + left mouse
  • Zoom - Alt + right mouse or mousewheel
  • Move Center - Mid Mouse or Shift +Left mouse

Toolbar Buttons

There are a number of toolbar buttons that can be used in this window. Go to the Object Section documentation for more information.

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


Tutorials/Object Oriented Programming/Object creation and rendering - Quest3D

Tutorials/Object Oriented Programming/Object creation and rendering

From Quest3D

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Object creation and rendering
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Primitive.cgr
      • 1.4.1 The IPrimitive interface
      • 1.4.2 IPrimitive->draw() function
      • 1.4.3 The Primitive class
    • 1.5 start.cgr
      • 1.5.1 Init
      • 1.5.2 Renderloop
      • 1.5.3 Project files

Object creation and rendering

This tutorial was made with an early version of 4.0. Some of the channels might be named different. Example: the "interface-tab" is called "projecttree" in 4.0.

Introduction

We start our tour of Object Oriented Quest3D with a basic example of rendering primitives of different:

  • type;
  • size;
  • color.

Functional description and context

So what do we need to make this possible?

1. A Primitive interface definition which:

a. allows us to set the following primitive attributes:

  • motion (position, rotation, size);
  • primitive type;
  • color.

b. a (public) function which contains our primitive render logic.

2. A container where we can add our primitives objects to;

3. A generic renderloop which renders all the primitives in the aforementioned container.

Design

Before we go to Quest3D and implement this logic, it's wise to first make a design.

For this example the design is simple: we have the interface IPrimitive and the implementation (class) Primitive, as is shown in the following diagram:

Primitive.cgr

Now that we know what to create, we start Quest3D and get to work.

The IPrimitive interface

1. Start up Quest3D and open de 'Channels'-section:

2. In the channels section open de OO Editor pane:

The OO Editor is the heart of the OO system. This is where you will define the interface definitions and class implementations. The OO Editor has two modes "interface"- and "class"-mode. Depending on the selection in the definitions section (A in screenshot 1 & 2) the sections on the right show either interface information (see screenshot 1) or class information (see screenshot 2).

OO Editor - interface mode

In "interface"-mode the right-aligned sections are depicted as: B. Members section: Shows the members and functions of the selected interface in the definitions section:

  • Name: the name of the member or function;
  • Type: the type of the member, which is one of the following:
 - Channel: A Quest3D channel;
 - Function: specifies the member is a function;
 - Matrix: 4x4 matrix;
 - Text: text;
 - Value: value;
 - Vector: 3D vector (x,y,z) value.

For each membertype static variants are available as well, which will be explained in [ref].

  • Value: The default value of the member.
  • Target: when the member is a function, this field will specify the location of the functionlogic.
  • Access: specifies the member's access:
 - Public: the member is exposed and can be accessed outside the interface context;
 - Private: the member can only be accessed in the interface.

It's recommended to set the member's access rights to 'private'. This prevents outside processes to access it which avoids corrupt memberdata by outside interference. Memberaccess should be done by means of member accessor functions, which will be explained in [ref].

C. Parameters section: Shows the parameters of the selected function in the members section, where:

  • Name: the name of the function parameter;
  • Type: the type (see membertypes) of the function parameter.

OO Editor - class mode

In "class"-mode the right-aligned sections are depicted as: B. Interface section: Shows the interfaces the class is derived from, where:

  • Name: the name of the interface;
  • Group: the channelgroup of the interface.

C. Members section: Same as section B. in interface mode.

3. In the in OO Editor select "interfaces" and click the "Add Interface" button to add a new interface.

4. Double click on the "NoName"-interface in the definition's panel to rename it to "IPrimitive".

Now let's add the interface properties:

5. Make sure the "IPrimitive"-interface is selected (it should be highlighted in blue as in the previous screenshot).

6. Click the add member and a pull-down menu will appear:

7. Select the "Vector" member type:

8. Double click the "NoName" member to rename it in "position".

9. Click on "public" in the accessfield and a pull-down menu will appear.

10. Select "private" to set the member's access rights to private.

11. Repeat step 6 through 10 to create the members "rotation", "size", "color", "type". Mind the member "size" which has a default value of (1,1,1).

IPrimitive->draw() function

In order to draw all the IPrimitive instances we have to define a draw()-functions which contains the render logic.

12. Click the add member and select the 'function'-type from the dropdownlist.

The functiontype dialog will pop-up:

This dialog is used to set the returntype of the function. For instance: if we define a function to get the current position of the IPrimitive, the returntype will be a value vector. Since we only want to call the render-logic, no returntype is needed.

13. make sure the "ChannelCaller" is selected and click op OK.

14. Double-click the "NoName" function and rename it to "draw".

We now have defined the function "draw()" for the IPrimitive. The "Target"-field of the draw function currently shows "Target not found!", which means there is no function-logic yet. The next step is to define this functionlogic using the channelgraph and link it to the "draw()" function member of IPrimitive.

15. Select the "Target"-field with your mouse, hold the left-mouse button and drag it down into the channel-graph window. Release the left-mouse button:

The data in the "Target"-field changes to "IPrimitive->draw" and the scenegraph shows two channels:

  • IPrimitive->draw - The public channelcaller for the IPrimitive draw-function;
  • This (IPrimitive->draw) - The pointer for the IPrimitive instance.

The "This"-channel is extremely important in Quest3D OO. When creating multiple instances of the IPrimitive instance, the "This" channel is used as an unique identifier, so the instance knows which member channels to access and update. Thus if you access or update members in your interface functions, make sure you link the "This"-channel to your member channels (step 19 -> 21). If you don't link the "This"-channel to the member channels, Quest3D will use the default values: position(0,0,0), rotation(0,0,0), size(1,1,1), color(0,0,0), type(box).

16. In the draw function we want to render a primitive with the members (position, rotation, size, color, type) in our instance. So let us begin by going to the Templates sections -> Objects and drag the "Primitive Object"-template into the channelgraph:

17. Connect the "Primitive Object"-channel to the "draw"-function channel:

When the "draw"-function, as currently implemented, is called, it will draw a primitive with the default properties: a box at position (0,0,0), with size (1,1,1) and color (0,0,0). In order to make it draw the primitive as specified in the member data, we have to link our member channels to the primitive channels.

18. Open de "Value Motion"-folder and delete the "Position Vector"-, "Rotation Vector"- and "Size Vector" channels:

19. Open the interface-tab in the bottom-left corner, open the channelgroup->IPrimitive tree:

20. Drag the "position"-, "rotation"- and "size"-members into the channelgraph:

21. Link the "position"-, "rotation"- and "size"-member channels to the "Value Motion" channel and link the "This"-channel to the member channels:

22. Replace the "Primitive Type"-channel with the "type"-member channel:

23. Open the "Material"-folder and replace the "Emmisive"-channel with the "color"-member channel:

The draw() function is finished. When called it will now render a primitive with the instance's memberdata.

Before we can call the function however, we need a class: "Primitive".

The Primitive class

In order to use the functionality defined in IPrimitive we need a class-implementation which can be instantiated.

24. Open de OO Editor.

25. In the "Definitions"-section select "Classes" and click "Add Class".

26. Rename the class in "Primitive".

27. Select the "Primitive"-class in the "Definitions"-section and click "Add Interface" in the "Interface"-section. A dialog will pop-up with the available interfaces in this Quest3D-project:

28. Select the "IPrimitive"-interface and click "OK.

29. Save the channelgroup as "primitive.cgr"

start.cgr

Now that we have our primitive interface and class implementation we need some logic to instantiate and render instances of the Primitive class.

29. Create a new channelgroup "start".

30. Drag the "simple scene"-template into the channelgraph.

31. Set the "Start3DScene"-channel as startchannel.

Now that we have a simple renderloop we need a way to create new instances of the Primitive class and modify their member values. There are several ways to do it, you can even dynamically create instances on the fly, but for this first tutorial we keep it simple.

Init

We need some initializationlogic which creates a container with specified class instances of the IPrimitive.

32. Create some "OneTime"-logic which is called before the renderloop:

33. Drag the "Class Instance List"-channel into the channelgraph and connect it to the "OneTime"--channel:

We now have a container in which we can create our Primitive-instances.

Let's create 3 instance of the "Primitive"-class:

34. Double click the "Class Instance List"-channel to open the "Class Instance List Properties"-dialog.

35. Select the "IPrimitive"-interface in the interface-section and:

  • Click the "Add Class"-button (1);

The "Add items" dialog pops up.

  • Select in the Classes section the "Primitive"-channelgroup and then the "Primitive"-class (2);
  • Set then number of items to "3" (3);
  • Click "OK".

We now have 3 instances of the "Primitive"-class in the "Class Instance List", but they all have the default values.

36. Change the default values into something more interesting:

37. Change the primitive type of the second instance to a torus, by clicking on the icon in the "type"-field and selecting "torus" from the dropdownlist:

38. Change the primitive type of the third instance to a cilinder.

We now have a container with primitives and can, manually, alter their properties. What we need next is a logic to render them.

Renderloop

The renderloop is a variation of the Simple Scene template, but since we want to call the draw-function of IPrimitive (which is a channel), we can't use the render-channel and are forced to define our own renderloop:

39. Delete the "render"-channel and it's children from the Channel Graph.

40. Drag a "ChannelCaller"-channel from the Channel List, rename it to "renderloop" and link it to the "Start3DScene"-channel.

41. Drag a "InstanceCommand"-channel from the Channel List and link it to "renderloop":

42. Doubleclick the "InterfaceCommand"-channel to open the propertiesdialog.

43. Open the "Iteration/random access" option in the tree and select the "For each class instance list":

This commandtype gives us an iterator to loop through the instances in an "Class Instance List".

44. Link the "Class Instance List" to the first node of the "Interface Command"-channel:

45. Drag a "InstanceRefItem"-channel from the Channel List and link it to the second node of the "Interface Command"-channel:

The "InstanceRefItem"-channel wil be the iterator and thus will contain the instance we want to access.

We want to call the draw() function of the instance so it will be called for each instance.

46. Open the "Interface"-tab in the bottom-left corner, open the channelgroup->IPrimitive tree.

47. Drag the "draw" function channel from the "Interface"-tab and:

  • link it to the third node of the "Interface Command"-channel;
  • now.. link the iterator "InstanceRefItem" to the first node of the "draw" function channel.

And... that's it. There you have it, your first OO project in Quest3D.

Project files

001 - Object Creation and Rendering.zip

Categories: Tutorials | OO


Tutorials/Object Oriented Programming/Object creation and rendering - Quest3D

Tutorials/Object Oriented Programming/Object creation and rendering

From Quest3D

< Tutorials | Object Oriented Programming(Redirected from Tutorial/OO/Basic Concepts/Object creation and rendering)
Jump to: navigation, search

Contents

  • 1 Object creation and rendering
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Primitive.cgr
      • 1.4.1 The IPrimitive interface
      • 1.4.2 IPrimitive->draw() function
      • 1.4.3 The Primitive class
    • 1.5 start.cgr
      • 1.5.1 Init
      • 1.5.2 Renderloop
      • 1.5.3 Project files

Object creation and rendering

This tutorial was made with an early version of 4.0. Some of the channels might be named different. Example: the "interface-tab" is called "projecttree" in 4.0.

Introduction

We start our tour of Object Oriented Quest3D with a basic example of rendering primitives of different:

  • type;
  • size;
  • color.

Functional description and context

So what do we need to make this possible?

1. A Primitive interface definition which:

a. allows us to set the following primitive attributes:

  • motion (position, rotation, size);
  • primitive type;
  • color.

b. a (public) function which contains our primitive render logic.

2. A container where we can add our primitives objects to;

3. A generic renderloop which renders all the primitives in the aforementioned container.

Design

Before we go to Quest3D and implement this logic, it's wise to first make a design.

For this example the design is simple: we have the interface IPrimitive and the implementation (class) Primitive, as is shown in the following diagram:

Primitive.cgr

Now that we know what to create, we start Quest3D and get to work.

The IPrimitive interface

1. Start up Quest3D and open de 'Channels'-section:

2. In the channels section open de OO Editor pane:

The OO Editor is the heart of the OO system. This is where you will define the interface definitions and class implementations. The OO Editor has two modes "interface"- and "class"-mode. Depending on the selection in the definitions section (A in screenshot 1 & 2) the sections on the right show either interface information (see screenshot 1) or class information (see screenshot 2).

OO Editor - interface mode

In "interface"-mode the right-aligned sections are depicted as: B. Members section: Shows the members and functions of the selected interface in the definitions section:

  • Name: the name of the member or function;
  • Type: the type of the member, which is one of the following:
 - Channel: A Quest3D channel;
 - Function: specifies the member is a function;
 - Matrix: 4x4 matrix;
 - Text: text;
 - Value: value;
 - Vector: 3D vector (x,y,z) value.

For each membertype static variants are available as well, which will be explained in [ref].

  • Value: The default value of the member.
  • Target: when the member is a function, this field will specify the location of the functionlogic.
  • Access: specifies the member's access:
 - Public: the member is exposed and can be accessed outside the interface context;
 - Private: the member can only be accessed in the interface.

It's recommended to set the member's access rights to 'private'. This prevents outside processes to access it which avoids corrupt memberdata by outside interference. Memberaccess should be done by means of member accessor functions, which will be explained in [ref].

C. Parameters section: Shows the parameters of the selected function in the members section, where:

  • Name: the name of the function parameter;
  • Type: the type (see membertypes) of the function parameter.

OO Editor - class mode

In "class"-mode the right-aligned sections are depicted as: B. Interface section: Shows the interfaces the class is derived from, where:

  • Name: the name of the interface;
  • Group: the channelgroup of the interface.

C. Members section: Same as section B. in interface mode.

3. In the in OO Editor select "interfaces" and click the "Add Interface" button to add a new interface.

4. Double click on the "NoName"-interface in the definition's panel to rename it to "IPrimitive".

Now let's add the interface properties:

5. Make sure the "IPrimitive"-interface is selected (it should be highlighted in blue as in the previous screenshot).

6. Click the add member and a pull-down menu will appear:

7. Select the "Vector" member type:

8. Double click the "NoName" member to rename it in "position".

9. Click on "public" in the accessfield and a pull-down menu will appear.

10. Select "private" to set the member's access rights to private.

11. Repeat step 6 through 10 to create the members "rotation", "size", "color", "type". Mind the member "size" which has a default value of (1,1,1).

IPrimitive->draw() function

In order to draw all the IPrimitive instances we have to define a draw()-functions which contains the render logic.

12. Click the add member and select the 'function'-type from the dropdownlist.

The functiontype dialog will pop-up:

This dialog is used to set the returntype of the function. For instance: if we define a function to get the current position of the IPrimitive, the returntype will be a value vector. Since we only want to call the render-logic, no returntype is needed.

13. make sure the "ChannelCaller" is selected and click op OK.

14. Double-click the "NoName" function and rename it to "draw".

We now have defined the function "draw()" for the IPrimitive. The "Target"-field of the draw function currently shows "Target not found!", which means there is no function-logic yet. The next step is to define this functionlogic using the channelgraph and link it to the "draw()" function member of IPrimitive.

15. Select the "Target"-field with your mouse, hold the left-mouse button and drag it down into the channel-graph window. Release the left-mouse button:

The data in the "Target"-field changes to "IPrimitive->draw" and the scenegraph shows two channels:

  • IPrimitive->draw - The public channelcaller for the IPrimitive draw-function;
  • This (IPrimitive->draw) - The pointer for the IPrimitive instance.

The "This"-channel is extremely important in Quest3D OO. When creating multiple instances of the IPrimitive instance, the "This" channel is used as an unique identifier, so the instance knows which member channels to access and update. Thus if you access or update members in your interface functions, make sure you link the "This"-channel to your member channels (step 19 -> 21). If you don't link the "This"-channel to the member channels, Quest3D will use the default values: position(0,0,0), rotation(0,0,0), size(1,1,1), color(0,0,0), type(box).

16. In the draw function we want to render a primitive with the members (position, rotation, size, color, type) in our instance. So let us begin by going to the Templates sections -> Objects and drag the "Primitive Object"-template into the channelgraph:

17. Connect the "Primitive Object"-channel to the "draw"-function channel:

When the "draw"-function, as currently implemented, is called, it will draw a primitive with the default properties: a box at position (0,0,0), with size (1,1,1) and color (0,0,0). In order to make it draw the primitive as specified in the member data, we have to link our member channels to the primitive channels.

18. Open de "Value Motion"-folder and delete the "Position Vector"-, "Rotation Vector"- and "Size Vector" channels:

19. Open the interface-tab in the bottom-left corner, open the channelgroup->IPrimitive tree:

20. Drag the "position"-, "rotation"- and "size"-members into the channelgraph:

21. Link the "position"-, "rotation"- and "size"-member channels to the "Value Motion" channel and link the "This"-channel to the member channels:

22. Replace the "Primitive Type"-channel with the "type"-member channel:

23. Open the "Material"-folder and replace the "Emmisive"-channel with the "color"-member channel:

The draw() function is finished. When called it will now render a primitive with the instance's memberdata.

Before we can call the function however, we need a class: "Primitive".

The Primitive class

In order to use the functionality defined in IPrimitive we need a class-implementation which can be instantiated.

24. Open de OO Editor.

25. In the "Definitions"-section select "Classes" and click "Add Class".

26. Rename the class in "Primitive".

27. Select the "Primitive"-class in the "Definitions"-section and click "Add Interface" in the "Interface"-section. A dialog will pop-up with the available interfaces in this Quest3D-project:

28. Select the "IPrimitive"-interface and click "OK.

29. Save the channelgroup as "primitive.cgr"

start.cgr

Now that we have our primitive interface and class implementation we need some logic to instantiate and render instances of the Primitive class.

29. Create a new channelgroup "start".

30. Drag the "simple scene"-template into the channelgraph.

31. Set the "Start3DScene"-channel as startchannel.

Now that we have a simple renderloop we need a way to create new instances of the Primitive class and modify their member values. There are several ways to do it, you can even dynamically create instances on the fly, but for this first tutorial we keep it simple.

Init

We need some initializationlogic which creates a container with specified class instances of the IPrimitive.

32. Create some "OneTime"-logic which is called before the renderloop:

33. Drag the "Class Instance List"-channel into the channelgraph and connect it to the "OneTime"--channel:

We now have a container in which we can create our Primitive-instances.

Let's create 3 instance of the "Primitive"-class:

34. Double click the "Class Instance List"-channel to open the "Class Instance List Properties"-dialog.

35. Select the "IPrimitive"-interface in the interface-section and:

  • Click the "Add Class"-button (1);

The "Add items" dialog pops up.

  • Select in the Classes section the "Primitive"-channelgroup and then the "Primitive"-class (2);
  • Set then number of items to "3" (3);
  • Click "OK".

We now have 3 instances of the "Primitive"-class in the "Class Instance List", but they all have the default values.

36. Change the default values into something more interesting:

37. Change the primitive type of the second instance to a torus, by clicking on the icon in the "type"-field and selecting "torus" from the dropdownlist:

38. Change the primitive type of the third instance to a cilinder.

We now have a container with primitives and can, manually, alter their properties. What we need next is a logic to render them.

Renderloop

The renderloop is a variation of the Simple Scene template, but since we want to call the draw-function of IPrimitive (which is a channel), we can't use the render-channel and are forced to define our own renderloop:

39. Delete the "render"-channel and it's children from the Channel Graph.

40. Drag a "ChannelCaller"-channel from the Channel List, rename it to "renderloop" and link it to the "Start3DScene"-channel.

41. Drag a "InstanceCommand"-channel from the Channel List and link it to "renderloop":

42. Doubleclick the "InterfaceCommand"-channel to open the propertiesdialog.

43. Open the "Iteration/random access" option in the tree and select the "For each class instance list":

This commandtype gives us an iterator to loop through the instances in an "Class Instance List".

44. Link the "Class Instance List" to the first node of the "Interface Command"-channel:

45. Drag a "InstanceRefItem"-channel from the Channel List and link it to the second node of the "Interface Command"-channel:

The "InstanceRefItem"-channel wil be the iterator and thus will contain the instance we want to access.

We want to call the draw() function of the instance so it will be called for each instance.

46. Open the "Interface"-tab in the bottom-left corner, open the channelgroup->IPrimitive tree.

47. Drag the "draw" function channel from the "Interface"-tab and:

  • link it to the third node of the "Interface Command"-channel;
  • now.. link the iterator "InstanceRefItem" to the first node of the "draw" function channel.

And... that's it. There you have it, your first OO project in Quest3D.

Project files

001 - Object Creation and Rendering.zip

Categories: Tutorials | OO


Reference Manual/Editor/Animation Section/Object List - Quest3D

Reference Manual/Editor/Animation Section/Object List

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Object List
    • 1.1 General
    • 1.2 Select
    • 1.3 Motion or Pivot

Object List

General

Click the object tab to edit objects

This object list shows a list of all objects in all channel groups that are currently loaded. The list shows public callers as well as regular objects. Objects that are in another group than the group you have selected have a little arrow in their icon.

There are no settings for an object. There are two buttons above the list where you can select if you want to edit the motion of the object or the pivot motion. Once you have selected an object you’ll see it’s motion path, axes and a bounding box if you have these helper items enabled

Select

If you click on an entry in the object list, the object is selected. When an object is selected you are able to use it in several other windows. In the Object Section this selected is used to show the object that can be edited. In the Skinning window you are able to add skinning to an object after selecting it.

This selected is remembered by Quest3D when working in the editor. This window will therefor show up in all sections of Quest3D so you are always able to select objects for preview or editing.

You are also able to use the "Select" toolbar button together with the Animation_3D_View window to select a object in the 3D view itself by moving the mouse over it and clicking the left mouse button. See Animation_Section for documentation on these toolbar buttons.

Motion or Pivot

You are able to move the motion or the pivot (offset) of an object by selecting the correct button. The motion of an object specifies it's location in 3d space.

With the pivot/offset motion you can change the rest position of the object. This way you can move the rest center to the edge of the object so you can rotate it around that point. The offset motion can also rotate and scale the rest orientation of the object.

Usually you only use the rest motion to set the position of the pivot point once. Therefore you should use a motion that has a Value Vector channel with Value channels connected to it and not Envelope channels. If you use a motion as an offset you can create interesting effects but it doesn't take long before it gets confusing.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Tutorials/Object Oriented Programming - Quest3D

Tutorials/Object Oriented Programming

< Tutorials
Jump to: navigation, search

Contents

  • 1 Object Oriented Programming
    • 1.1 Part I: Getting started
    • 1.2 Part II: Basic Concepts
    • 1.3 Part III: Patterns
    • 1.4 Part IV: Advanced Concepts
    • 1.5 Part V: Putting it All Together
    • 1.6 OO GUI reference

Object Oriented Programming

Part I: Getting started

  • Introduction to Object Oriented Development in Quest3D

Part II: Basic Concepts

  • Object creation and rendering
  • Specialization (also known as overrides)
  • Inheritance

Part III: Patterns

  • Introduction
  • Singleton
  • Factory
  • Manager
  • Observer
  • Facade
  • Hierarchical Visitor

Part IV: Advanced Concepts

  • Dynamic object management
  • Collision Detection
  • Plug-in based architecture
  • Resource management
  • Multi-pass rendering
  • Multi-target rendering

Part V: Putting it All Together

  • Asteroids

OO GUI reference

  • OO Editor The editor to create and manage interface and class definitions
  • Project Tree Tree to navigate through channelgroups, interfaces and interface members as well as drag/drop functions for the ChannelEditor


Reference Manual/Editor/Object Section - Quest3D

Reference Manual/Editor/Object Section

< Reference Manual | Editor
Jump to: navigation, search

Contents

  • 1 Object Section
    • 1.1 General
    • 1.2 Surface List
    • 1.3 Object 3D View
    • 1.4 Material Properties
    • 1.5 Materials Window
    • 1.6 Texture Properties
    • 1.7 Surface Properties
    • 1.8 Texture List

Object Section

General

The object section contains windows to edit the material properties of objects. You can select an object for editing by picking it in the Object List. An object is build up from different sections. In Quest3D we call each section a surface. A surface has

  • Material properties (color, emissive, specular)
  • Surface settings (z-buffer settings, transparency)
  • Texture settings (texture images, texture mapping, texture blending, etc..)
  • Texture Stages (mapping, Color Blending, ects...)

There are several windows available to edit these properties:

Surface List

In this list you see all the surfaces of the selected object. All actions in the other windows will affect the selected surface(s). You can select more than one surface.

  • Surface List

Object 3D View

This window shows a 3d view of the object. You can use it to view the object and you can use it to pick surfaces. By pressing the CTRL key you can select multiple surfaces.

  • Object 3D View

Material Properties

This window displays several sliders to edit the material properties of the surface(s). Diffuse controls the color of the surface(s), emissive controls the color that is added to the entire surface(s), specular controls the glossiness of the surface(s), the alpha value can be used to fade textures or objects and the there’s a switch to make the surface(s) invisible or visible .

  • Material or Shader Properties

Materials Window

The Material Windows displays a list of materials, loaded into your project, or on disk. You can browse through the materials and load them into your project or apply them to your selected surfaces. A material can hold colors, textures and/or shaders.

  • Materials Window

Texture Properties

This window controls the settings for each texture stage such as the texture blending and texture mapping.

  • Texture Properties

Surface Properties

This window controls properties of the entire surface(s). It controls the transparency and the z-buffer settings for the surface. You can switch this window in two modes: easy and advanced. In easy mode this window can set the texture blending for all stages automatically.

  • Surface Properties

Texture List

This window shows all textures that are available in the current group. When you click a texture it is applied to the selected stage of the selected surface(s). This window also allows you to load a texture by clicking on an empty picture.

  • Texture List

One Level Up - Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


ObjectDataNormalDisplace - Quest3D

ObjectDataNormalDisplace

Contents

  • 1 ObjectDataNormalDisplace
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

ObjectDataNormalDisplace

General

Move all vertexes in the direction of its normal to create a new smaller or bigger object. Make sure the object is solid.

Children

  1. Matrix Texture Set 0 - Matrix
    • This is the matrix to reposition the first texture set. Because texture coordinates are in 2D only the x and y are used.
  2. Matrix Texture Set 1 - Matrix
    • This is the matrix to reposition the second texture set. Because texture coordinates are in 2D only the x and y are used.
  3. Source Objectdata - 3D ObjectData
    • Objectdata to create a bigger or smaller version off
  4. Object normal displace percentage - Value
    • Value to determine how much to move allong the normal

Description

This channel is able to create an objectdata that is exactly the same as the original only moves the vertexes along its normal. This way a smaller or bigger object can be created that is exactly the same as the original. This is different then using the size matrix since sizing is in the normal direction. This result can for example be used to have a bigger source object then that is drawn for the ClothObject channel.

This method only works if your object is a solid. That means it must be one whole and not have vertexes that are not connected to eachother.

CallChannel

This will render the new objectdata.

Applications

Use it to fix cloth problems for cloth penatrating your source object.

Tips

Use weld tools in your modeler to create a correct object.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Tutorials/Object Oriented Programming/Observer Pattern - Quest3D

Tutorials/Object Oriented Programming/Observer Pattern

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Observer
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Primitive.cgr
    • 1.5 Observer.cgr
      • 1.5.1 IPublisher
      • 1.5.2 ISubscriber
    • 1.6 Timer.cgr
    • 1.7 Publisher_impl.cgr
    • 1.8 Subscriber_impl.cgr
      • 1.8.1 ISub_impl
      • 1.8.2 Subscriber class
    • 1.9 start.cgr
      • 1.9.1 Init
      • 1.9.2 Update & Render
      • 1.9.3 User input
    • 1.10 Project Files
    • 1.11 External links

Observer

Introduction

The Observer pattern, also known as the listener or the 'publish/subscribe'-mechanism, is a technique where objects can monitor other objects by subscribing to it. When the object's state changes, this object will trigger it's subscribers of this change, after which the subscribers can take the appropriate actions.

A good example is a GUI system, where the click on a button has to lead to an action in another part of the system. By subscribing the action object to the button-object, it will get an "on click" notification when the user clicks the button.

Functional description and context

Since designing and implementing a complete GUI system for a tutorial is a bit overkill, the demo we discuss in this tutorial has to do with color-changing boxes.

We define a variable number of box primitives, whereby the first box will be the 'publisher' and the other boxes will subscribe to this box. When we change the color of the first box, this box will notify the other boxes of this change, after which the other boxes will adjust their color accordingly.

To make this demo a bit more interesting a timer-mechanism is added to the subscriber implementation, so it'll take some time before the boxes will adjust their color.

So what do we need?

  • The primitive object from the basic concept lessons to render some box primitives;
  • A Publisher object which objects can subscribe to;
  • A notificationsystem for eventmessaging between the publisher and it's subscribers (this sounds harder than it really is);
  • A timer to give the 'random'-element to the notification-update.

Design

As shown in the diagram:

The subscriber object consists of:

  • IPrimitive, which contains the objectdata;
  • ISubscriber, which gives us the functionality to receive event notifactions from a publisher;
  • ITimer/ISub_impl, the timer object and some additional data to make the delayed color-copy possible.

The IPublisher object consists of:

  • IPrimitive which contains the objectdata;
  • IPublisher which gives us the functionality to manage subscriptions and post event notifications to the subscribers.

The eventmessaging is implemented using the relationship between ISubscriber and IPublisher. The IPublisher's "doCallback"-function will call the ISubscriber's "callback"-function for every subscriber in the "subscribers"-list. The "doCallback"-function has several parameters:

  • event: defines the event (text);
  • parameter: parameter value of the event;
  • publisher: reference to the publisher.

By overriding the ISubscriber's "callback"-function we can define custom logic on the eventtrigger: in this example we use the publisher's reference to get it's primitive color, save it to a temporary "newColor"-variable and use a timer to delay the color-copy.

Primitive.cgr

See General Concepts - Multiple inheritance for a complete IPrimitive implementation.

Observer.cgr

The Observer CGR contains the Observer pattern definition, which we will implement in:

  • Subscriber_impl.cgr
  • Publisher_impl.cgr

IPublisher

The "IPublisher" interface consists of 1 member, a reference container with the subscriber references, and 3 functions:

  • subscribe: adds a subscriber to the container;
  • unsubscribe: removes a subscriber from the container;
  • doCallback: event message logic: calls the "callback"-function for every subscriber in the reference container.

1. Create the channelgroup "Observer" and define the "IPublisher"-interface:

2. Implement the subscribe function:

3. Implement the unsubscribe function (not used in the demo):

4. Implement the doCallback function:

ISubscriber

The "ISubcriber"-interface consists of only 1 item, the "callback"-function.

5. Define the "IPublisher"-interface and the "callback"-function:

function type: Channelcaller;

function parameters:

  • event: Text;
  • parameter: Value;
  • publisher: ClassInstance.

The "callback"-function does not require a default implementation, since it will be implemented in "Subscriber_impl".

Timer.cgr

The timer CGR contains a simple (countdown) "timer"-interface, with 2 members:

  • timer - the initial timervalue;
  • step - the decrement per update.

And 3 functions:

  • update - updates the timer based on the step, where:
timer = timer - (TC * step)
  • setTimer - set the timer and step members;
  • isTimerExpired - true is timer < 0, else false.

6. Implement the "timer"-interface and it's functions.

Publisher_impl.cgr

The Publisher_impl CGR contains the implementation of the Publisher and is pretty straightforward:

7. Create the "Publisher"-class which implements the interfaces "IPublisher" and "IPrimitive". No implementations, no overrides. Yes, it's THAT easy.

Subscriber_impl.cgr

The Subscripber_impl CGR contains the implementation of the Subscribers (or listeners).

ISub_impl

Since we want to have a delay between the colorchange of the publisher and the subscribers, we need additional members to store the new color and a Trigger for the color-update.

8. Implement the "ISub_impl"-interface with the 2 public members:

  • newColor, Vector(1,1,1) - the new color;
  • trigger, Channel:Trigger - trigger for the color-update.

Subscriber class

Next up is the implementation.

9. Create the "Subscriber"-class, which implements the following interface:

  • ISubscriber - override the "callback"-function;
  • IPrimitive - override the "update"-function;
  • ITimer;
  • ISub_impl.

10. Implement the "update"-function:

We use the Trigger in the ISub_impl to only trigger the color-change when the timer expires. I.e.: the color-change only happens when:

A. a new color is set using the "callback"-function;

B. the timer is expired.

11. Implement the "callback"-function:

Note that the color-changing action only get's triggered when the eventtext == "colorchange". This way you can use the "callback"-function like a message processor for various events on the publisher.

start.cgr

Now that all the components for the observer-pattern are implemented, let's create the "start"-group to bring it all together:

Init

In the init logic we want to accomplish 2 things:

Create the publisher

As shown in the figure:

  • Add a new class of the classtype "Publisher_impl" to the class instance list;
  • Get the publisher-reference from the class instance list - we will need this reference for the subscribtion of the observers.

Create the observers and subscribe them to the publisher

As shown in the figure, create a for-loop to:

  • Add 'x' observer instances to the class isntance list (classtype= subscriber_impl);
  • Get the subscriber-reference from the class instance list;
  • Set the position of the subscriber;
  • Subscribe to the publisher.

Update & Render

The update and render logic is the same as in all the other tutorials. Iterate through the Class Instance List and call update() and draw() respectively.

User input

In the "User input"-logic we define two triggers:

Reset trigger (r)

This trigger resets our init-onetime, thus resetting the scene;

Color change trigger (spacebar)

This trigger sets the color of the publisher and calls the "DoCallback"-function:

And there you have it... the observer-pattern implemented.

Project Files

patterns_observer.zip

External links

Observer in Wikipedia

Categories: Tutorials | OO


OctTree - Quest3D

OctTree

OctTree

General

Octtree used for texture lighting channel

Description

Calculating shadows can be very slow this channel helps the Texture Lighting channel to drastically improve speed. Link 3D Render channels to this channel to let it calculate the tree of the linked render channels.

One Level Up - Channel List

Back to Main Index


ODE Body - Quest3D

ODE Body

Contents

  • 1 ODE Body
    • 1.1 General
    • 1.2 Children
    • 1.3 Shapes
    • 1.4 Body Properties
    • 1.5 Shape Properties
    • 1.6 Shape Properties
      • 1.6.1 Reset button
      • 1.6.2 Orientation, size and position
    • 1.7 Tips

ODE Body

General

(This channel is based on ODE, [[click[[ here for the ODE homepag

This channel represents a rigid body for the dynamics system. A rigid body is a body that can not be squashed or deformed, it can not change shape. The base type of this channel is Matrix. You can use this channel just as any regular matrix.

The shape that is used for the dynamics system has nothing to do with the actual geometry. In most cases the rigid body is build up from several primitives (plane, box, and sphere).

Children

  1. Start position - Matrix
    • Starting position of the body
  2. Enable body - Value
    • Enable or disable the collision and physics system on this body. (0 - No collision/dynamics, 1 - Calculate collision/dynamics). When this value changes from 1 to 0, the body will is reset.
  3. Collision object - CollisionObject
    • Used when a "Polygon Object" shape is added to the body. You are able to link multiple collision objects.

Shapes

A rigid body is build up out of one or more shapes. This way you can approach the shape of the actual 3D model by combining several primitive shape. The calculations for primitive shapes are much more efficient than for the actual geometry. Below you see how a car can be represented by using 4 sphere primitives and 2 box primitives.

Body Properties

At the top of the dialog you see a dropdown list with all the shapes of the body. The currently selected shape is displayed in the box. You can rename a shape by clicking in the box and typing a new name. To add a shape, you press the ‘New’ button. To delete the current shape, you press the ‘Delete’ button. Below the drop downl ist you see two check buttons. These two check marks apply to the entire rigid body:

Enable dynamics – If this button is not checked the body is static. If you use a plane shape or a polygon object, the body is always static i.e. it does not move by gravity or collisions. Disable forces on active body – This is almost the same as the previous setting. The difference is that the dynamics calculations are still performed. The forces that act upon the body are set to zero so the body remains static. Bodies that are connected to this body with a joint are still attached to this body. This is not the case with the previous setting.

Shape Properties

There are a number of properties you can change for a shape.

From the drop down list in the top of the window you are able to select one of the created shapes. Once you have selected the shap you are able to rename it by clicking on the name and typing in the name name.

There are a few properties that apply to the entire body (all shapes in the body).

  • Enable dynamics - (TODO: Description)
  • Disable forces on active body - (TODO: Description)

Shape Properties

There are a number of properties you can change for a shape.

  • Shape - Here you can select the primitive that is being used for the current shape. The following shapes are available:
    • Box
      • This is a box with an x, y and z sizing and an orientation. An example of this is the body of the car in the picture.
    • Sphere
      • This is a sphere with a radius and a position. The sphere has a perfect round shape although its represention in the editor might not be a perfect round shape. An example of this shape are the wheels of the car in the picture.
    • Plane
      • This is an infinite plane with an orientation and a position. This shape is not very useful except for defining a ground plane for your world. A rigid body that uses this shape can not be dynamice i.e. it can only function as a static ‘world’ object.
    • Polygon Object
      • This shape can be any 3D model you want. This shape is often used to represent the environment. The object can be moved, rotated and sized. There is one drawback of using a 3D model as a shape: just like the plane shape, it can only be static. That is why it can only be used to model the environment. You can however animate the position and orientation of the source object, and it will still affect other dynamic objects. This is useful for moving platforms, catapults, conveyor belts for example.

For performance reasons, you cannot link a 3D model directly to the ODE body channel. The ODE body channel only accepts CollisionObject(s) as collision shape(s). This implies no limitations, it only provideds a more efficient way to calculate dynamics. You can link a 3D object directly to the CollisionObject channel.

  • Bounce factor - When a shape is bouncy and another object that is also bouncy hits it, the objects bounce of each other. When the bounce factor is 1.0 the objects bounce off each other with the same force they hit. When the bounce factor is 0.0 the objects do not bounce of each other. Bouncing only works if both surfaces that collide are bouncy. The bounce factor for the collision is the average of both bounce factors of both surfaces.
  • Minimum bounce velocity - This is a threshold for bouncing. If the contact force is below this threshold the objects bounce off each other. Bouncing only works if both surfaces are bouncy. On contact, the average of both thresholds is taken as the bounce threshhold.
  • Mass - This is the mass of the shape.
  • Roughness - When a surface is not bouncy, it is is slippery. This means that other objects can slide over it. This has no physical foundation; it is just a matter of different collision solvers. When a non bouncy surfaces hits a bouncy surface both surfaces are assumed to be non bouncy i.e. slippery.

Roughness is a threshold before the surfaces are starting to slip. The roughness value represents the ratio between the force across the surface and the force pressing along the normal of the surface. A roughness value of 3.0 means that the force along the surface must be three times bigger than the force along the normal. The lower this value is, the more slippery the surface is. The lower of two roughness values is chosen for the collision solver when two surfaces collide. You should allways take this into account when experimenting with roughness values.

  • Slip - This setting applies to slippery i.e. non bouncy surfaces (see above). This is the slip friction for the surfaces. When two surfaces collide the largest slip friction is chosen as the slip friction for the collision solver.
  • Angular velocity damping - Usually bodies are slowed down by things like air friction. In the simulated world this is not the case. To simulate rotational friction, you can specify an angular velocity daming factor. Each step the angular velocity is multiplied by this value. You can use this setting to slow down swinging objects or you can use it to make a vehicle more stable.
  • Sphere radius - When you use a sphere shape, you can specify the radius of the sphere here.

Reset button

The reset button will reset the body to its starting position and also reset the dynamics of the body so you can test it again. You are also able to use the second child link position of the channel to turn the dynamics calculations and collision on or off for this body.

Orientation, size and position

The orientation, size and position of shapes can be set in the animation section. There you can select a shape and move them around just like any regular motion.

Tips

You can use the angular velocity damping to make vehicles more stable. The angular velocity damping makes sure the vehicle does not tip over when you race accros a rough landscape at high velocity.

To experiment with slip and roughness values, you can set the roughness of all items in the world to a very high value (10000 for example). Next, set the slip friction value of all items to 0. Now you can change the values of the environment item without having to worry about the other values because on contact the collision solver always uses the lowest roughness value and the highest slip friction value.

In most cases you should try to make your simulation look realistic. The most important thing is that your simulation looks and feels reel. Don't hesitate to give your car a weight of 1 kg if it improves the result.

You can use multiple polygon objects in one rigid body. This way you can assingn differnt values to each object. You can make parts of the road slippery and others rough for example.

With the ODE Command channel you can set the slip friction value dynamically. This is very helpful for vehicles. Increase the slipperyness of the wheels as the speed of the vehicle increases. This increases both handling and realism. The ODE info value has a function that allows you to retrieve the speed of a body.

To simulate wheels on a car you need to use the sphere shapes. Cylinder primitives are not available. This may seem odd at first but in practice the user can hardly see the difference.

Remember: the bouncy collision solver only comes into action when both surfaces that are involved in the collision are set as 'bouncy'. In any other case the slippery collision solver is used.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | ODE | Dynamics


ODE Command - Quest3D

ODE Command

Contents

  • 1 ODE Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Add Force
      • 1.3.2 Add Torque
      • 1.3.3 Add Relative Force
      • 1.3.4 Add Relative Torque
      • 1.3.5 Add Force at Position
      • 1.3.6 Add Force at Relative Position
      • 1.3.7 Add Relative Force at Position
      • 1.3.8 Add Relative Force at Relative Position
      • 1.3.9 Set Gravity Vector
      • 1.3.10 Set Timeframe Step Size
      • 1.3.11 Set Frequency
      • 1.3.12 Set soft ERP of contact bodies
      • 1.3.13 Set soft CFM of contact bodies
      • 1.3.14 Change slip value
      • 1.3.15 Change the WORLD ERP
      • 1.3.16 Change the WORLD CFM
      • 1.3.17 Enable or disable ODE body collision
      • 1.3.18 Set fixed calculations per frame

ODE Command

General

(This channel is based on Open Dynamics Engine, ODE homepage)

Used for a range of different command that can be executed on a ODE Body channel.

Children

  1. Body - ODE Body
    • Body to execute command on
  2. Command Specific - All Types Channel
    • Channel type and usage depends on selected command, please see below. You Can link multiple channels if it is required by the command.

Description

When this channel is called the selected command will be executed on the linked ODE Body channel. Here are the command that can be selected through the channel properties dialog:

Add Force

Value Vector

This command applies a force to the body. The vector you link to this channel is the force vector that should be applied.

Add Torque

Value Vector

This command adds a rotational force to the object. The vector you link to this channel is the force that should be applied

Add Relative Force

Value Vector

This is the same as the add force command, but the coorfdinates are in local space, not world space.

Add Relative Torque

Value Vector

This is the same as the add torque command, but the coorfdinates are in local space, not world space.

Add Force at Position

Value Vector

This adds a force to a body. The second vector specifies the position where the force should be applied. The coordinates are in world space.

Add Force at Relative Position

Value Vector

This adds a rotational force to a body. The second vector specifies the position where the force should be applied. The coordinates are in world space.

Add Relative Force at Position

Value Vector

This adds a force to a body. The second vector specifies the position where the force should be applied. The coordinates are in local space.

Add Relative Force at Relative Position

Value Vector

This adds a rotational force to a body. The second vector specifies the position where the force should be applied. The coordinates are in local space.

Set Gravity Vector

Value Vector

This sets the gravity for the simulated world. The vector indicates the direction and the strength of gravity. In real life, this vector has a length of about 10 and is pointing downward along the y axis.

Set Timeframe Step Size

Value

This sets the speed of the simualtion. You can use this to slow the simulation down or to speed it up. For actual time simulation this value should be 0.04. The lower this value gets, the slower the simulation.

Set Frequency

Value

With this setting you can lock the update rate of the simulation to a certain value. A good value is 60 (Hz). When the frequency is set to zero, one simulation step is calculated each frame. This is not advised because this causes the simulation to behave differently at different frame rates. The higher the update rate, the more accurate the simulation gets. When you have a lot of errors in your simulation, you can try to increase this value. Natrually the higher the update rate, the more performance the simulation costs. The maximum frequency is 1000.

Set soft ERP of contact bodies

Value

The bouncy contact solver allows for some error. This command sets the global Error Reduction Parameter. The error reduction parameter is a value between 0.0 and 1.0. The higher this value, the more objects are corrected towards the location where they should be. This value works in conjuction with the CFM value and it can make the world more spongy in stead of solid. This value ranges between zero and one.

Set soft CFM of contact bodies

Value Vector

The contraint force mixing parameter specifies how much the correct contact between two bodies can be violated. This value only applies to the bouncy collision solver. A low value makes surfaces hard, a high value makes them more spongy. This value ranges between zero and one.

Change slip value

Value

This allows you to change the slip force value of a body dynamically. The first value is the new slip force value, the second value is an optional index of the primitive you want to set the slip value of. If no index is provided, all primitives of the body are set to this value.

Change the WORLD ERP

Value

This changes the global Error reduction parameter. This value should range between 0.1 and 0.8. The ERP value specifies how much a joint tries to reach it's correct position.

Change the WORLD CFM

Value

This changes the global Constraint Force Mixing parameter. This value specifies how much joints are allowed to drift apart. A small value (0.001) results in stiff contraints while a larger value (0.5) results in a softer constraint.

Enable or disable ODE body collision

Value

This command enables or disables you to control waht ODE Body objects can have collision or not.

Set fixed calculations per frame

Value

This allows you to control the fix ammount of calculations are done per frame.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | ODE | Dynamics


ODE Info Value - Quest3D

ODE Info Value

Contents

  • 1 ODE Info Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Get Hinge2 Angle 1
      • 1.3.2 Get Hinge2 Angle 1 rate
      • 1.3.3 Get Hinge2 Angle 2 rate
      • 1.3.4 Get frame calculate count
      • 1.3.5 Get linear velocity
      • 1.3.6 Get linear velocity X
      • 1.3.7 Get linear velocity Y
      • 1.3.8 Get linear velocity Z
      • 1.3.9 Get force
      • 1.3.10 Get torque
      • 1.3.11 Get relative point velocity
      • 1.3.12 Get relative point velocity X
      • 1.3.13 Get relative point velocity Y
      • 1.3.14 Get relative point velocity Z
    • 1.4 Call Channel

ODE Info Value

General

(This channel is based on Open Dynamics Engine, ODE homepage)

This channel is used to retrieve information from the dynamics system through a linked ODE Body channel.

Children

  1. All Types - All Types Channel
    • The type of channel that needs to be linked here depends on the setting of the channel

Description

This channel is able to retrieve information from a linked dynamics channel. The information that should be retrieved can be configured in the properties dialog. When a value can be retrieved, this channel will set itself to that value. The value will be retrieved every time this channel is used as a value.

Here are all possible options:

Get Hinge2 Angle 1

ODE Joint

This retrieves the angle of a hinge2.(steering angle)

Get Hinge2 Angle 1 rate

ODE Joint

This retrieves the speed of the steering rotation.

Get Hinge2 Angle 2 rate

ODE Joint

This retrieves the rotration speed of the wheel.

Get frame calculate count

no params

This returns how many steps where calculated in the last frame. When the update rate of the dynamics engine is lower than the frame rate this value is zero once in a while because the dynamic engine does not update every frame. When the update rate of the dynamics engine is higher than the frame rate this value might be 2 or more once in a while.

Get linear velocity

ODE Body

This retrieves the linear velocity of a rigid body.

Get linear velocity X

ODE Body

This retrieves the linear velocity along the x axis of the world.

Get linear velocity Y

ODE Body

This retrieves the linear velocity along the x axis of the world.

Get linear velocity Z

ODE Body

This retrieves the linear velocity along the x axis of the world.

====Get angular velocity====ODE Body This retrieves the angular velocity of a rigid body.

Get force

ODE Body

This retrieves the accumulated force of a rigid body.

Get torque

ODE Body

This retrieves the accumulated angular force of a rigid body.

Get relative point velocity

ODE Body

This returns the velocity of a point relative to the object. The coordinates of the point are in object space i.e. relative to the object. The velocity is measured in world coordinates. You can use this function to determine how fast a the surface of a tire is moving for example. Another example is that you can retrieve the speed of a swinging pendulum.

Get relative point velocity X

ODE Body, Value Vector

This returns the x velocity of a point relative to the object. The value represents the velocity of the point along the x axis of the world.

Get relative point velocity Y

ODE Body, Value Vector

This returns the y velocity of a point relative to the object. The value represents the velocity of the point along the y axis of the world.

Get relative point velocity Z

ODE Body, Value Vector

This returns the z velocity of a point relative to the object. The value represents the velocity of the point along the z axis of the world.

Call Channel

Has no effect on this channel. Use this channel as a value.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | ODE | Dynamics


ODE Joint - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ODE Joint

From Quest3D

Jump to: navigation, search

Contents

  • 1 ODE Joint
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Joint Type
      • 1.3.2 Limits
      • 1.3.3 Other settings
    • 1.4 Tips
    • 1.5 Call Channel

ODE Joint

General

(This channel is based on ODE, click here for the ODE homepage)

This channel can join two ODE Body channels. There are several ways to join two bodies. For example there are slider connections and hinge connections.

Children

  • ODE Body 1 - ODE Body

First body to join with second body

  • ODE Body 2 - ODE Body

Second body to join with first body

  • Velocity - Value

This is the desired rotation velocity of the joint. Not all joints can rotate. In case of a hinge2 joint, this rotation velocity is the desired rotation velocity of the wheel.

  • Maximum motor force - Value

This is the maximum force that is applied to reach the desired velocity.

  • Velocity2/Rotation (Hinge2) - Value

This is the second rotation velocity. In case of the hinge2 joint, this value is the rotation angle of the steering axis.

  • Parent Matrix - Matrix

This matrix specifies the position and orientation of the joint.

  • Maximum force steering motor - Value

This value specifies the maxumum force that is applied to achieve the desired steering angle of a hinge2 type joint.

Description

You are able to join two ODE Body channels with this channel. There are a different ways to join two ODE Body channels. Each joint type has some properties you can change. Here are the available joint types:

Joint Type

  • Ball and Socket - A ball and socket type of joint allows the joint to rotate in any direction. A ball and socket joint looks like this:

  • Hinge - A hinge joint works like hinges in a door. A hinge joint looks like this:

  • Slider - A slider joint allows one object to slide relative to another object. The slide joint looks like this:

  • Hinge2 - The hinge2 joint is very useful to build vehicles. The hinge2 joint looks like this:

Limits

  • Use axis/position limitation - When this box is checked, the range of motion of the joint is limited by the lowest and highest limit settings. The limit is given in radians and the initial rotation of the joint defines the zero angle. This limit also applies to the slide joint where the limits define a sliding distance. The initial position defines a sliding distance of 0.
  • Lowest Limit - The minumum angle or distance that is allowed for the joint.
  • Highest Limit - The maximum angle or distance that is allowed for the joint.

Other settings

  • Fudge Factor - (Taken from the ODE manual) The current joint stop/motor implementation has a small problem: when the joint is at one stop and the motor is set to move it away from the stop, too much force may be applied for one time step, causing a ``jumping motion. This fudge factor is used to scale this excess force. It should have a value between zero and one (the default value). If the jumping motion is too visible in a joint, the value can be reduced. Making this value too small can prevent the motor from being able to move the joint away from a stop.
  • ERP - This setting only applies to the hinge2 joint. This setting, together with the CFM setting allow you to simulate car springs. The ERP value specifies how much the joint tries to reach it's initial position. The ERP value ranges between 0.0 and 1.0. With a value of 0.0 the joint will drift apart and with a value of 1.0 the joint returns to it's original position very quickly.
  • CFM - This value specifies how much the joint is allowed to drift from its original position. A small value will result in a springy joint, a large value will result in a very stiff joint. This value ranges between 0 and 1. For mor information look at the description of the ERP setting.
  • Enable motor - When this box is checked, the motor of the joint is enabled. The joint will try to rotate at the specified velocity using the specified force.
  • Use velocity steering - By default the second angle specifies a steering angle. If this box is checked the value specifies a rotation velocity, not an angle. This setting only applies to the hinge2 joint.
  • Bounce stop - When a joint reaches its limits you can make it bounce back. The bounce factor ranges from zero to one. Values higher than one are not reccomended because the joint will bounce back harder than it hit the limit.

Tips

You can use the motor of a the slider to make it act like a spring. Simply set the desired position to 0 and the force of the motor specifies the stiffness of the spring.

Do not set the ERP value to 1.0 because it can lead to instability. Use values of 0.1-0.9 in stead.

You can simulate static friction in a joint by enabling the motor and setting the desired speed to zero. Set the maximum force to a small value. The higher the maximum force, the larger the friction.

You can create a brake by setting the desired velocity to 0. The maximum force is the braking force and it should be a large value. The higher the force, the better the brake.

Call Channel

This channel needs to be called every frame to make sure the connections are correctly made and kept.

One Level Up - Channel List

Back to Main Index


OGG Player - Quest3D

OGG Player

(Redirected from Ogg File)
Jump to: navigation, search

Contents

  • 1 OGG File
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

OGG File

General

Load a OGG file for usage with OGGPlayerControl

Children

  1. OGG filename - Text
    • Filename to load when a OGG file is played

Description

With this channel you can load a OGG file from disk and use the OggPlayerControl to control the OGG file.

In the interface you can select a OGG file from disk to load with the "Select File" button. With the "Save File in ChannelGroup" check box you select if you want the file to be stored as reference (the filename only) or as the OGG data itself. When this check box is checked the entire MP3 file will be saved into the channelgroup the next time the channelgroup is saved. Please note that this increases the size of the channelgroup, but you will not need to distribute a MP3 file separately.

If you would like to select a OGG file without the interface, you are able to link a Text child and give a full pathname. This file will be loaded as soon as the file is played. If you want to change the filename, use the "Stop" command and then "Play" again using the MP3PlayerControl channel.

CallChannel

Will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | New in version 4.0


OGG Player - Quest3D

OGG Player

Contents

  • 1 OGG File
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

OGG File

General

Load a OGG file for usage with OGGPlayerControl

Children

  1. OGG filename - Text
    • Filename to load when a OGG file is played

Description

With this channel you can load a OGG file from disk and use the OggPlayerControl to control the OGG file.

In the interface you can select a OGG file from disk to load with the "Select File" button. With the "Save File in ChannelGroup" check box you select if you want the file to be stored as reference (the filename only) or as the OGG data itself. When this check box is checked the entire MP3 file will be saved into the channelgroup the next time the channelgroup is saved. Please note that this increases the size of the channelgroup, but you will not need to distribute a MP3 file separately.

If you would like to select a OGG file without the interface, you are able to link a Text child and give a full pathname. This file will be loaded as soon as the file is played. If you want to change the filename, use the "Stop" command and then "Play" again using the MP3PlayerControl channel.

CallChannel

Will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | New in version 4.0


OGG Player Command - Quest3D

OGG Player Command

Contents

  • 1 OggPlayerControl
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Control
      • 1.3.2 Play file from start
      • 1.3.3 Stop
      • 1.3.4 Pause
      • 1.3.5 Set Volume
      • 1.3.6 Continue
      • 1.3.7 Information
      • 1.3.8 Get current play position
      • 1.3.9 Get Lenght
      • 1.3.10 Set position
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

OggPlayerControl

General

Control a OGG file loaded with Ogg_File.

Children

  1. OGG File Channel - Ogg_File
    • Channel holding a loaded OGG file
  2. Player Value - Value
    • Used for volume setting or getting the sound length.

Description

You can use this channel to control the Ogg_File channel and get information about the currently playing OGG file.

Control

You select the action through the interface:

Play file from start

Initialize the OGG file and start playing it from the start

Stop

Stop playing the OGG file and de-initialize so the filename can change.

Pause

Temporary stop playing the current OGG file. Use "Continue" to continue playing.

Set Volume

Change the playback volume of the OGG file.

Continue

After a "Pause" this command will continue playing the OGG from where it was paused

Information

Get current play position

Will set the "Player Value" child to the current song position. The value is in seconds (and parts thereof).

Get Lenght

Will set the "Player Value" child to the length of the song in seconds (and parts thereof).

Set position

Change the position of the song that is currently playing. Set the position to the number of seconds from the "Player Value" child.

CallChannel

When this channel is called, the configured action will be triggered using the linked children.

Remarks

When setting the volume, the value channel linked as second child "Player Value" can be set from 0 (zero) to 1 (one). Where one is maximum volume, and 0 minimum.

All information will be set into the second child, a value channel. All information is in seconds.

When you want to use the "Continue" function, you should "Pause" the playing, not "Stop".

If you would like to load another file (the filename channel changed of the OGG File for example) and load a new OGG File for playing. The "Play" command will re-initialize the selected file and start playing from the start.

Tips

  • You can let this channel control a Timer Value. Multiply the position of the song with 25 to and use Set Value to set the Timer Value. This will result in a timer that is controlled by the position of the song, great for music syncing.
  • The volume between 0..1 is a logartihmic scale, to convert to a linear scale use this expression value: log10(100/volume)*-1000

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | Commands and Settings | New in version 4.0


OGG Player Command - Quest3D

OGG Player Command

(Redirected from OggPlayerControl)
Jump to: navigation, search

Contents

  • 1 OggPlayerControl
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Control
      • 1.3.2 Play file from start
      • 1.3.3 Stop
      • 1.3.4 Pause
      • 1.3.5 Set Volume
      • 1.3.6 Continue
      • 1.3.7 Information
      • 1.3.8 Get current play position
      • 1.3.9 Get Lenght
      • 1.3.10 Set position
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Tips

OggPlayerControl

General

Control a OGG file loaded with Ogg_File.

Children

  1. OGG File Channel - Ogg_File
    • Channel holding a loaded OGG file
  2. Player Value - Value
    • Used for volume setting or getting the sound length.

Description

You can use this channel to control the Ogg_File channel and get information about the currently playing OGG file.

Control

You select the action through the interface:

Play file from start

Initialize the OGG file and start playing it from the start

Stop

Stop playing the OGG file and de-initialize so the filename can change.

Pause

Temporary stop playing the current OGG file. Use "Continue" to continue playing.

Set Volume

Change the playback volume of the OGG file.

Continue

After a "Pause" this command will continue playing the OGG from where it was paused

Information

Get current play position

Will set the "Player Value" child to the current song position. The value is in seconds (and parts thereof).

Get Lenght

Will set the "Player Value" child to the length of the song in seconds (and parts thereof).

Set position

Change the position of the song that is currently playing. Set the position to the number of seconds from the "Player Value" child.

CallChannel

When this channel is called, the configured action will be triggered using the linked children.

Remarks

When setting the volume, the value channel linked as second child "Player Value" can be set from 0 (zero) to 1 (one). Where one is maximum volume, and 0 minimum.

All information will be set into the second child, a value channel. All information is in seconds.

When you want to use the "Continue" function, you should "Pause" the playing, not "Stop".

If you would like to load another file (the filename channel changed of the OGG File for example) and load a new OGG File for playing. The "Play" command will re-initialize the selected file and start playing from the start.

Tips

  • You can let this channel control a Timer Value. Multiply the position of the song with 25 to and use Set Value to set the Timer Value. This will result in a timer that is controlled by the position of the song, great for music syncing.
  • The volume between 0..1 is a logartihmic scale, to convert to a linear scale use this expression value: log10(100/volume)*-1000

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | Commands and Settings | New in version 4.0


OneTime - Quest3D

OneTime

Contents

  • 1 OneTime
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

OneTime

General

Calls a child once

Children

  1. Child - All Types Channel
    • Calls these children once

Description

When this channel is called, it will call it first "Child" one time only. Even when this channel is called multiple times or continuously it will not call the child again.

If you would like to reset this channel so it will call the child again once you can use the OneTimeReset channel or link a Value on the "Reset" child link position and set that child to 1 (one). When this channel is one it will again call the child once.

CallChannel

When called, the channel will call the first child once until the channel is reset.

Applications

  • Can be used to initialize your application. For example by using this channel to call the GoFullScreen channel to initialize your 3d application to switch to a full screen session. You may only want to do this once.
  • Often used to start a timer (Timer Command) so your animation will start.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


OneTimeInitialize - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

OneTimeInitialize

From Quest3D

Jump to: navigation, search

Function definition

void OneTimeInitialize();

Description

This function is called by Quest3D after the channel has been initialized (constructor) but before the data is loaded with the LoadChannel function. Like the implies, this function is only called once. You are able to initialize children that are automatically created in this function. Overload the function if you want to use it.

Remarks

Please also read the Channels Communication documentation to learn more on child link positions and how they are defined correctly.

Example

In this example, the first child of the channel is set to one when the channel is created. This child channel is automatically created with this channel.

void Aco_Example1::OneTimeInitialize() {
    Aco_FloatChannel* floatChannel=NULL;

    // Retrieve the pointer of our first child
    floatChannel = (Aco_FloatChannel*)GetChild(0);

    // Set our child value to 1
    if (floatChannel != NULL) {
        floatChannel->SetFloat(1.0f);
    }
}

Related Documentation

LoadChannel

One Level Up - A3d Channel

Back to Main Index


OneTimeReset - Quest3D

OneTimeReset

Contents

  • 1 OneTimeReset
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

OneTimeReset

General

This will reset a OneTime channel so it will call it's children again (once)

Children

  1. OneTime - OneTime
    • The OneTime channel to reset

Description

Call this channel to reset a OneTime channel. The linked OneTime channel will call it's child once when that channel is called.

CallChannel

When called the channel will reset the linked OneTime child.

Remarks

Make sure you don't keep calling this channel because it will keep resetting the linked OneTime channel and that channel will then keep calling its children and loose it's functionality.

Applications

  • This will allow you to "reset" some parts in your channel program.
  • You can also re-load groups with dynamic loading

Tips

There are a few templates and examples where this channel is used with dynamic loading.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Category: Channels


Reference Manual/Help on Help/Online help - Quest3D

Reference Manual/Help on Help/Online help

< Reference Manual
Jump to: navigation, search

Online help

Quest3D has a support web page with tutorials, tips, forums, resources and an online version of the manual.

You need to register at the website before you can make use of this service.

After you registration you will be able to visit the Quest3D Support Pages and the Quest3D support forum, both valuable resources for every Quest3D user.

Back to Main Index

Category: Reference Manual


OO Class Instances List - Quest3D

OO Class Instances List

Contents

  • 1 OO Class Instances List
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Properties
    • 1.6 Remarks

OO Class Instances List

Children

none

Description

This channel is used to create a list of instances of the same or varying ClassTypes.

CallChannel

Calling this channel will provide the parent with a list of created instances.

Interface

Class Instances List01.jpg

Properties

Use the Add or Insert Class button to add new instances of certain ClassTypes, the Remove Class button will remove the slelected instance from the list.

Remarks

A Class instance list can hold different Classes with different interfaces. Use the OO InterfaceCommand iteration/random access->For each Class Instance List to loop trough all the instances.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO ClassInstance - Quest3D

OO ClassInstance

Contents

  • 1 OO ClassInstance
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface

OO ClassInstance

Children

none

Description

This channel is used to create a single instance from a certain ClassType.

CallChannel

Calling this channel will provide the parent with the created instance.

Interface

Use the Set Class button to select and set the ClassType

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO ClassType - Quest3D

OO ClassType

Contents

  • 1 OO ClassType
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Remarks

OO ClassType

Children

none

Description

This channel is can be set to a ClassType. The channel can be used with the OO InterfaceCommand to create new ClassInstances of a certain ClassType.

CallChannel

Calling this channel will pass the ClassType to it's parent.

Interface

Remarks

Use the dialog to set the correct ClassType.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO Editor - Quest3D

OO Editor

Contents

  • 1 Object Orientation Editor
    • 1.1 Description
    • 1.2 Icons
    • 1.3 Definition tree
    • 1.4 Interface editor
      • 1.4.1 Adding an interface member
        • 1.4.1.1 Adding a channel
        • 1.4.1.2 Adding a function
          • 1.4.1.2.1 Selecting the function type
          • 1.4.1.2.2 Setting the function target
          • 1.4.1.2.3 Navigating to a function target in the ChannelEditor
      • 1.4.2 Editing an interface member
        • 1.4.2.1 Member name
        • 1.4.2.2 Member value
          • 1.4.2.2.1 Value
          • 1.4.2.2.2 Vector
          • 1.4.2.2.3 Matrix
          • 1.4.2.2.4 Text
          • 1.4.2.2.5 Channel
          • 1.4.2.2.6 Function
      • 1.4.3 Member access
      • 1.4.4 Removing an interface member
    • 1.5 Editing function parameters
      • 1.5.1 Adding a function parameter
      • 1.5.2 Editing a function parameter
        • 1.5.2.1 Parameter name
        • 1.5.2.2 Parameter type
      • 1.5.3 Removing a parameter
      • 1.5.4 Important note about editing interfaces
    • 1.6 Class editor
      • 1.6.1 Adding an interface
      • 1.6.2 Overriding and editing interface members
        • 1.6.2.1 Overriding
        • 1.6.2.2 Editing
        • 1.6.2.3 Removing override
      • 1.6.3 Removing an interface
    • 1.7 Related documentation

Object Orientation Editor

Description

The Object Orientation Editor allows you to edit and manage interfaces, classes and members. This section shows all the functionality and features of the editor.

To add the OO Editor, right mouseclick in a Quest3D interface tab and select Add Window->Object Orientation->OO Editor

Icons

For all icons used in the OO Editor, see the Icons section.

Definition tree

The definition tree, in the left pane of the OO Editor, shows function and class definitions in the selected channelgroup. You will be able to add/remove interfaces and classes by using the buttons in the upper part of the pane.

The definition tree
The definition tree

The tree shows:

  • Interface or Class name, which are editable by double clicking the tree node
  • Access (public or private), which can be changed by double clicking the tree node. Public interfaces and classes are accessible by other channelgroups, private interfaces and classes are only accessible by the group they are defined in.

Selecting an interface or class will respectively open the interface or classeditor in the right pane.

Interface editor

When an interface is selected in the definition tree, the right pane of the OO Editor shows the Interface Editor.

The interface editor allows you to edit interface members. Interface members are shown in table in the upper pane of the interface editor.

The interface definition editor
The interface definition editor

The table shows the following interface member properties:

  • Name: can be edited
  • Type: cannot be edited
  • Value: can be edited if the member is not a function
  • Target: can be edited if the member is a function
  • Access: public or private access. Public access means the member can be accessed outside the interface. Private access means only the interface itself may access the property.

The lower pane shows parameters for function members.

Adding an interface member

Add an interface member
Add an interface member

Member types that can be added are:

  • Channel Can be of any channel type that is available for usage in the ChannelEditor. Can be invoked by using InterfaceChannel
  • Function A function. Can be invoked by using InterfaceFunction Functions can be recognized by the blue color of the row.

And 'Native' Quest3D types:

  • Matrix Can be invoked by using InterfaceMatrix
  • Text Can be invoked by using InterfaceText
  • Value Can be invoked by using InterfaceValue
  • Vector Can be invoked by using InterfaceVector

Under the 'static' submenu you can find the same member types, but if you choose a type here it will become 'static'. Static variables are usually used to create 'Singletons'.

Adding a channel

When you choose to add a channel, the following dialog will pop-up.

Choose Channel Type dialog
Choose Channel Type dialog

This dialogs allows you to choose the channel type. If you later create class instances of classes that implement this interface, each class instance will contain a unique instance of this channel. Except when the member is declared as 'static'.

Adding a function
Selecting the function type

When you choose to add a function, the following dialog will pop-up.

Choose Function Type Dialog
Choose Function Type Dialog

  • ChannelCaller: A function without a return value, in regular programming also known as 'void' This is the only function type you can use to create recursive functions.

'Native' Quest3D types:

  • Matrix
  • Text
  • Value
  • Vector

And

  • Channel: Can by any channel type that can also be used in the ChannelEditor. When you select this radio button, you will be able to choose a channel type in the list at the right.
Setting the function target

The 'function target', which is the actual channel that will be invoked when a function call is done, can be set in two different ways:

1) By double clicking the 'target' field in the table.

Choose Target Dialog
Choose Target Dialog

A dialog will pop-up and you can choose an existing public channel in your project to set as a target. That public channel can only be the same type as your function.

2) By dragging from the 'target' field in the table to the ChannelEditor.

A new public channel and ThisClassInstance channel for the function will be created and the target will be set.

A default function target implementation
A default function target implementation

The functiontarget is ready for implementation.

Navigating to a function target in the ChannelEditor

Navigating to a function target in the Channel Editor can be done by double clicking on the 'Type' cell of the function. The public channel that is set as function target will then be shown in the last active channel editor.

Editing an interface member

Member name

Names of all interface members can be changed by double-clicking the 'Name' cell of the interface member, typing the name and pressing 'Enter'

Member value
Value

A value can simply be edited by double clicking the 'Value' cell of an interface member

Vector

A vector can simply be edited by double clicking the 'Value' cell of an interface member

Matrix

A matrix can be edited by double clicking the 'Value' cell of an interface member. This cell contains a 'Matrix' icon. When double-clicked, the Edit Matrix dialog will pop-up.

Edit matrix dialog
Edit matrix dialog

Changes in the matrix dialog will be visible real-time. However, if you press 'Cancel', the original matrix (as before you started editing) will be set back.

Text

Text values can be edited by double clicking the 'Value' cell of the member in the interface member table. It is also possible to edit text multi-line. This can be done by right mouse-clicking on the 'Value' cell of the member and selecting 'Edit multi-line'.

Interface member table context menu

A multi-line edit dialog will pop-up. The interface editor will recognize if a text is multi-line. If it is multi-line, next time the edit dialog will automatically pop-up when the 'Value' cell is double-clicked.

Multi-line edit dialog
Multi-line edit dialog

Channel

A channel can be edited by double-clicking the channel icon in the 'Value' cell of the member. When double-clicked, the appropriate channel dialog will pop-up.

Function

Changing a function target works the same as setting one.

Member access

Member access can be changed by double clicking the 'Access' cell of the member. Member access can be public or private.

Removing an interface member

An interface member can be removed by selecting the member and click the 'Remove Member' button in the upper part of the interface editor. After removing a member, an empty row in the Interface Editor will appear. This row will remain empty until a new interface member is created and placed in that row. The reason why the interface gets an empty 'slot' in its interface member collection, instead of moving all interface members one row up, is because of performance. The interface editor shows the exact order of the members, as well as empty slots.

Editing function parameters

The lower pane in the interface editor contains the 'function parameter table'. When a function in the 'interface member table' is selected, the function parameter table will be filled with its parameters. If you select a non-function member, the table is disabled.

Here you can add, remove and edit function parameters.

Adding a function parameter

Adding an interface parameter can be done by clicking the 'Add parameter' button. A parameter is always of type 'Channel', which can be chosen in the 'Choose Channel Type' dialog.

Choose Channel Type dialog
Choose Channel Type dialog

After selecting the channel type, you can press OK.

Editing a function parameter

Parameter name

Names of all parameters can be changed by double-clicking the 'Name' cell of the parameter, typing the name and pressing 'Enter'

Parameter type

Parameter type chan be changed by double-clicking the 'Type' cell of the parameter. A 'Choose Channel Type' dialog will pop-up and let you choose the parameter type.

Removing a parameter

A parameter can be removed by clicking the 'Remove Parameter' button.

Important note about editing interfaces

After you designed your application and created interfaces, note that changing the interface may damage your application. After changing an interface, you must save ALL the channelgroups in memory that contain classes implementing that interface. Channelgroups that use the changed interface, but which are not in memory, can fail after your change!

Everywhere in the software world interfaces can't change at all. They require a whole recompile of all applications that use the interface or, if that's not possible, require you to write a whole new interface. In Quest3D interfaces can change, but keep in mind that you should do it with care.

Class editor

When a class is selected in the definition tree, the right pane of the OO Editor shows the Class Editor.

The upper pane of the class editor shows all interfaces a class implements. The editor allows you to add/remove interfaces to/from a class.

When selecting an interface in the upper pane of the class editor, the lower pane will show all interface members. In this lower pane you can override members and edit their values.

Overridden members can be recognized by the green color of the row.

Class editor

Adding an interface

When you click the 'Add interface' button, a dialog will pop-up to let you choose possible interfaces to add.

Add an interface
Add an interface

When the 'OK' button is pressed, the interface will be added to the class.

Overriding and editing interface members

Overriding

Interface members can be overridden by right clicking in the class members table (the lower pane), and select 'Override'.

Add an interface

Overriding functions is done automatically when creating a function target using drag and drop.

The overridden class member will become green.

Editing

Overridden class members can be edited just like it is done with interface members.

Removing override

Removing an override can be done by right clicking in the class members table and select 'Remove Override'

Add an interface

Removing an interface

By selecting an interface in the upper pane of the class editor and pressing the button 'Remove interface', an interface will be removed from a class. An empty slot will appear and, just as with removed interface members, stay empty until a newly added interface takes its place.

Related documentation

Project Tree, Object Oriented Portal

Categories: Reference Manual | Editor | OO


OO Instance Ref Item From Container - Quest3D

OO Instance Ref Item From Container

OO Instance Ref Item From Container

Children

  1. Reference or Class Container - OO InstanceRefContainer/OO Class Instances List
    • A container holding one or more (ref)instances
  2. index - Value
    • index for the instance to retrieve

Description

This channel is able to retrieve a class instance from a container by providing an index.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InstanceRefContainer - Quest3D

OO InstanceRefContainer

Contents

  • 1 OO InstanceRefContainer
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Properties
    • 1.6 Remarks

OO InstanceRefContainer

Children

  1. Source Class Container - OO Class Instances List
    • Class instance list to get instances from

Description

This channel is used to hold a list of references from ClassInstances. Using the OO InterfaceCommand channel, this list can be accessed and changed.

CallChannel

Calling this channel will provide the parent with a list of InstanceRefItems.

Interface

Missing Documentation.
need screenshot

InstanceRefContainer01.jpg

Properties

Items in this list can't be changed manually.

Remarks

You can check whether an OO InstanceRefItem is valid by using an OO InterfaceInfoValue set to Is the class instance valid.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Incomplete


OO InstanceRefItem - Quest3D

OO InstanceRefItem

Contents

  • 1 OO InstanceRefItem
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Properties
    • 1.6 Remarks

OO InstanceRefItem

Children

  1. OO InstanceRefContainer or OO Class Instances List - All Types Channel
    • Container from which instances are retrieved, leave empty when setting the instanceRefItem.
  2. index - Value
    • The index of the item to retrieve, leave empty when setting the instanceRefItem.

Description

This channel is used to hold a reference to an OO ClassInstance.

CallChannel

Calling this channel will provide the parent with a reference to a OO ClassInstance. If no child's are attached this channel can be set using the OO InterfaceCommand channel. When an OO InstanceRefContainer or OO Class Instances List and a valid index are linked the InstanceRefItem will be set to a reference from that list at the specified index postion.

Interface

Properties

Use the Set Class button to set the reference to a OO ClassInstance.

Remarks

You can check whether a InstanceRefItem is valid by using an OO InterfaceInfoValue set to Is the class instance valid.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InstanceRefTree - Quest3D

OO InstanceRefTree

Contents

  • 1 OO InstanceRefTree
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel

OO InstanceRefTree

Children

none

Description

This channel is used to store a position tree of OO ClassInstance references. The OO InterfaceCommand Position Tree->Create is used to fill the tree. The tree can then be queried using the OO InterfaceCommand for items in sphere range, closest item and/or furthest item.

The ClassInstance references are stored in a very efficient tree structure. This makes searching for closest items less performance intensive. Depending on your project a tree can be calculated and filled only once, and only needs updating when positions of items change.

CallChannel

Calling this channel as a child of an OO InterfaceCommand channel will either fill the tree or retrieve items based on the OO InterfaceCommand settings.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceChannel - Quest3D

OO InterfaceChannel

Contents

  • 1 OO InterfaceChannel
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Remarks

OO InterfaceChannel

Children

  1. Instance Item - OO ClassInstance
    • Item to get the data from
  2. Operands - All Types Channel
    • Parameters change depending on channeltype

Description

This channel can be used to retrieve data from an Interface Member where the type of the data to retrieve is set to the “channel” type.

CallChannel

This depends on the type of channel. If the type of channel has been set, please see the help of that channel. If you need to use base type of the channel make sure the tickbox Use base type as channel type is checked.

Interface

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceCommand - Quest3D

OO InterfaceCommand

Contents

  • 1 OO Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Container
        • 1.5.1.1 Add class instance copy to container
        • 1.5.1.2 Add new class to container
        • 1.5.1.3 Cleanup
        • 1.5.1.4 Clear container
        • 1.5.1.5 Copy class instance to container at index
        • 1.5.1.6 Create new class in container at index
        • 1.5.1.7 Remove instance
        • 1.5.1.8 Remove instance
      • 1.5.2 Iteration/random access
        • 1.5.2.1 Assign reference item
        • 1.5.2.2 For each class instance list
        • 1.5.2.3 For each ref container
        • 1.5.2.4 Instance reference at position
      • 1.5.3 Misc
        • 1.5.3.1 Convert channel group to object
        • 1.5.3.2 Create instance
        • 1.5.3.3 Enable/disable function speed profiling
        • 1.5.3.4 Morph object
        • 1.5.3.5 Reset to class
        • 1.5.3.6 Set 'This' for function
      • 1.5.4 Position tree
        • 1.5.4.1 Create
        • 1.5.4.2 Get closest item
        • 1.5.4.3 Get furthest item
        • 1.5.4.4 Get items in sphere range
      • 1.5.5 Reference container
        • 1.5.5.1 Add instance to refcontainer
        • 1.5.5.2 Add refcontainer to refcontainer
        • 1.5.5.3 Cleanup
        • 1.5.5.4 Clear reference container
        • 1.5.5.5 Copy class instance to reference container
        • 1.5.5.6 Copy refcontainer to refcontainer
        • 1.5.5.7 Copy refcontainer to refcontainer (Clear)
        • 1.5.5.8 Insert one item in recontainer
        • 1.5.5.9 Move item from refcontainer to refcontainer
        • 1.5.5.10 Remove duplicates
        • 1.5.5.11 Remove instance from refcontainer
        • 1.5.5.12 Remove item from refcontainer
        • 1.5.5.13 Set item in refcontainer at index
        • 1.5.5.14 Swap item
    • 1.6 Related documentation

OO Command

Children

Depends on the selected command.

Description

This channel is used to perform OO related commands. Such commands include operations on collections, trees and object instances.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the 'Command' tree in the OO Command channel interface. A small help description is shown in the lower pane.

Commands

Container

Add class instance copy to container

Copy the contents of a class instance into an empty spot in the container.

Children

  1. OO ClassInstance Class instance to be copied
  2. OO Class Instances List Class instance list to copy the instance to
  3. Value (Output) Index of the new list item
Add new class to container

Instantiates a new class and adds it to the container

Children

  1. OO ClassType Type of the class to be instantiated
  2. OO Class Instances List Class instance list to instantiate the new object in
  3. Value (Output) Index of the new list item
Cleanup

Removes all empty items from the container and resizes to the number of existing instances in the list.

Children

  1. OO Class Instances List Class instance list to cleanup
Clear container

Removes all items from the container

Children

  1. OO Class Instances List Class instance list to cleanup
Copy class instance to container at index

Copy a class instance into a provided spot in the container

Children

  1. OO ClassInstance Class instance to be copied
  2. OO Class Instances List Class instance list to copy the instance to
  3. Value Index to copy to
Create new class in container at index

Instantiates a new class and inserts it in the container at a certain index

Children

  1. OO ClassType Type of the class to be instantiated
  2. OO Class Instances List Class instance list to instantiate the new object in
  3. Value Index to insert the item
Remove instance

Remove the provided class instance from the container. The container will remain the same size and contain an empty spot. For removing empty spots, see Cleanup

Children

  1. OO InstanceRefItem Reference of the instance to remove
  2. OO Class Instances List Class instance list to remove the instance from
Remove instance

Remove an item from the container at the provided index. The list will remain the same size and contain an empty spot. For removing empty spots, see Cleanup

Children

  1. OO Class Instances List Class instance list to remove the instance from
  2. Value Index to remove the item

Iteration/random access

Assign reference item

Set the supplied reference item to the supplied class instance.

Children

  1. OO ClassInstance Class instance that should be refenced
  2. OO InstanceRefItem (Output) Item that will contain the reference to the OO ClassInstance
For each class instance list

Iterates through a class instance list. For each item in the class instance list, the provided reference item will be set (For each loop)

Children

  1. OO Class Instances List Class instance list that should be used in the loop
  2. OO InstanceRefItem (Output) Item that will contain the reference to the current index in the class instance.
  3. All Types Channel Channels to be called each 'step' in the loop.
For each ref container

Iterates through a reference container. For each item in the reference container, the provided reference item will be set (For each loop)

Children

  1. OO InstanceRefContainer Reference container that should be used in the loop
  2. OO InstanceRefItem (Output) Item that will contain the reference to the current index in the class instance.
  3. All Types Channel Channels to be called each 'step' in the loop.
Instance reference at position

Set the supplied reference item to the item of the supplied reference container at a certain index.

Children

  1. OO InstanceRefContainer Instance reference container to get the reference item from.
  2. OO InstanceRefItem (Output) Item that will contain the reference to the item in the reference container.
  3. Value Index of the item to get the reference from.

Misc

Convert channel group to object

Convert the 3D Object in the supplied channelgroup to an OO structured 3D Object. Make sure the 'object template' channelgroup is loaded into memory.

Children

  1. OO ClassInstance Class instance that will contain the data of the 3D Object
  2. Text Name of the channelgroup that contains the 3D Object to be converted
Create instance

Create a new instance in the class instance channel of the provided class type

Children

  1. OO ClassInstance Output Class instance that will contain the new instance of the provided type
  2. OO ClassType Type of the class that should be instantiated
Enable/disable function speed profiling

Enables function speed profiling. The profiler will measure the time needed to execute a function, the percentage of the total CPU time it needs and the number of invokations per frame. Results are visible in the public channel that is used as 'function target'.

Children

  1. Value Enabled = 1, Disabled = 0
Morph object

Transform an object into another class type. All common interfaces will be copied.

Children

  1. OO ClassInstance Input/Output Class instance that will be changed to the new class type
  2. OO ClassType New type the object should be transformed to.
Reset to class

Reset all the data the class contains to the data of the class definition.

Children

  1. All Types Channel Class instance that should be reset.
Set 'This' for function

Set a new class instance as 'This' pointer for a specific function. This command is needed when using recursion

Children

  1. OO ClassInstance Class instance that will be used as 'This' pointer for the function
  2. OO InterfaceFunction InterfaceFunction to set the 'This' pointer for.

Position tree

Create

Create a reference tree from the supplied list. Also provide how to find the position information from the classes.

Missing Documentation.
TO BE DOCUMENTED
Get closest item

From the supplied reference tree, get the items that are closest to the supplied vector. You can exclude a reference item and provide the number of items you want to return.

Children

  1. OO InstanceRefTree The position tree
  2. OO InstanceRefContainer Output Instance ref container to store the closest items
  3. Value Vector Vector that contains the position
  4. OO ClassInstance Excluded classinstance (use InstanceRefItem)
  5. Value Maximum number of items in the returned instance ref container
Get furthest item

From the supplied reference tree, get the items that are furthest from the supplied vector. You can exclude a reference item and provide the number of items you want to return.

Children

  1. OO InstanceRefTree The position tree
  2. OO InstanceRefContainer Output Instance ref container to store the furthest items
  3. Value Vector Vector that contains the position
  4. OO ClassInstance Excluded classinstance (use InstanceRefItem)
  5. Value Maximum number of items in the returned instance ref container
Get items in sphere range

From the supplied reference tree, get the items that are in the supplied range vector. You can exclude a reference item.

Children

  1. OO InstanceRefTree The position tree
  2. OO InstanceRefContainer Output Instance ref container to store the furthest items
  3. Value Vector Vector that contains the position
  4. Value Range distance
  5. OO ClassInstance Excluded classinstance (use OO InstanceRefItem)

Reference container

Add instance to refcontainer

Copy the reference of a class instance into an empty spot in the reference container

Children

  1. OO ClassInstance Instance to add to the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to add the instance to.
Add refcontainer to refcontainer

Copy content of a reference container into a reference container

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
Cleanup

Remove all empty items from the reference container

Clear reference container

Remove all items from the reference container

Copy class instance to reference container

Copy the reference of a class instance into an empty spot in the reference container. Does not copy duplicate items.

Children

  1. OO ClassInstance Instance to copy to the reference container (can be InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to add the instance to.
Copy refcontainer to refcontainer

Copies all items in the source container to the destination reference container. Does not copy duplicate items.

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
Copy refcontainer to refcontainer (Clear)

Clears the destination reference container and copies all items in te source reference container to the destination reference container. Does not copy duplicate items.

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
Insert one item in recontainer

Insert the class instance in the reference container at the supplied index.

Children

  1. OO ClassInstance Instance to copy to the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to add the instance to.
  3. Value Index to insert the item in
Move item from refcontainer to refcontainer

Move a supplied class instance from one refcontainer to one another.

Children

  1. OO InstanceRefContainer Source reference container.
  2. OO InstanceRefContainer Destination reference container.
  3. OO ClassInstance ClassInstance to move (can be OO InstanceRefItem)
Remove duplicates

Remove all duplicates in the instancerefcontainer

Children

  1. OO InstanceRefContainer Instance reference container to remove duplicates from.
Remove instance from refcontainer

Children

  1. OO ClassInstance Instance to remove from the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to remove the instance from.
Remove item from refcontainer

Children

  1. OO InstanceRefContainer Instance reference container to remove the item from.
  2. Value Index of the item to be removed
Set item in refcontainer at index

Children

  1. OO ClassInstance Item to set in the reference container (can be OO InstanceRefItem)
  2. OO InstanceRefContainer Instance reference container to set the item in
  3. Value Index to store the item
Swap item

Children

  1. OO InstanceRefContainer Instance reference container of which items are to be swapped
  2. Value Index of an item
  3. Value Index of item to swap the other item with

Related documentation

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Incomplete


OO InterfaceFunction - Quest3D

OO InterfaceFunction

OO Function

Children

  1. Instance item - OO ClassInstance
    • The class instance that is used to invoke the function
  2. Operands - All Types Channel
    • Parameters needed for the function

Description

This channel is used to invoke OO Functions.

CallChannel

Calling this channel will execute the selected function. The provided OO ClassInstance channel will be use as 'This' pointer for the invoked function.

Interface

The OO Function Interface allows you to select the function to invoke. When a function is called, the run-time will automatically calls the overriddenfunction, if it exists. If you explicitely want to invoke the default implementation of the function, the implementation which the 'Interface' targets, select 'Use default implementation'.

You can also select 'Use default implementation' when you want to call the default implementation in an overridden function. Make sure you don't forget to check 'Use default implementation' (see arning below).

WARNING When you invoke the same OO function inside an OO function implementation, this can cause a 'stack overflow'. Quest3D will then crash without any warning. If you want to implement recursive functions, make sure you change the 'This' pointer by using a OO InstanceRefItem as the first parameter of your recursive call. Recursive functions can only be of type ChannelCaller

Related documentation

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceInfoValue - Quest3D

OO InterfaceInfoValue

Contents

  • 1 OO InterfaceInfoValue
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 InfoValue
      • 1.4.1 Get number of items in reference container
      • 1.4.2 Is the class instance the same
      • 1.4.3 Is the class instance of the class type
      • 1.4.4 Does the class instance contain the interface
      • 1.4.5 Is the class instance valid
    • 1.5 Applications

OO InterfaceInfoValue

Children

  1. Depends on the selected command - All Types Channel

Description

This channel can be used to retrieve info about a OO ClassInstance, or an OO InstanceRefContainer.

CallChannel

Calling this channel will execute the selected command, a Value is returned to the parent channel.

InfoValue

Get number of items in reference container

Retrieve the number of items an OO InstanceRefContainer holds, returns the number of items.

Children

  1. OO InstanceRefContainer
Is the class instance the same

Checks if both OO ClassInstances are the same, returns 1 if true

Children

  1. OO ClassInstance
  2. OO ClassInstance
Is the class instance of the class type

Checks if a ClassInstance is of a certain OO ClassType, returns 1 if true.

Children

  1. OO ClassInstance
  2. OO ClassType
Does the class instance contain the interface

Checks if a ClassInstance contains a certain OO InterfaceType

Children

  1. OO ClassInstance
  2. OO InterfaceType
Is the class instance valid

Checks whether a OO ClassInstance is valid, returns 1 if true. When a OO ClassInstance is deleted from a OO Class Instances List or OO InstanceRefContainer this command will return 0.

Children

  1. OO ClassInstance

Applications

Get info about ClassInstances or InstanceRefContainers

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceMatrix - Quest3D

OO InterfaceMatrix

Contents

  • 1 OO InterfaceMatrix
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

OO InterfaceMatrix

Children

  1. Instance Item - OO ClassInstance
    • Item from which to retrieve the matrix

Description

This channel is able to store and retrieve a matrix from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the matrix.

Retrieve data

Because this channel has a Matrix base class, it can be used normally as a Matrix channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Matrix channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store a matrix.

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


OO InterfaceText - Quest3D

OO InterfaceText

Contents

  • 1 InterfaceText
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

InterfaceText

Children

  1. Instance Item - OO ClassInstance
    • Instance to get the text from

Description

This channel is able to store and retrieve text from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the text.

Retrieve data

Because this channel has a Text base class, it can be used normally as a Text channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Text channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store some text.

Remarks

Interface member variables can also be dragged in onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


OO InterfaceType - Quest3D

OO InterfaceType

Contents

  • 1 InterfaceType
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Remarks

InterfaceType

Children

none

Description

This channel can be set to an InterfaceType. The channel can be used with the OO InterfaceInfoValue to check if a Class has a certain interface.

CallChannel

Calling this channel will pass the InterfaceType to it's parent.

Interface

Remarks

Use the dialog to set the correct InterfaceType.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0


OO InterfaceValue - Quest3D

OO InterfaceValue

Contents

  • 1 InterfaceValue
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

InterfaceValue

Children

  1. Instance Item - OO ClassInstance
    • Instance from which to retrieve the value

Description

This channel is able to store and retrieve a values from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the value.

Retrieve data

Because this channel has a Value base class, it can be used normally as a Value channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Value channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store a value.

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


OO InterfaceVector - Quest3D

OO InterfaceVector

Contents

  • 1 InterfaceVector
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Retrieve data
      • 1.2.2 Store data
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

InterfaceVector

Children

  1. Instance Item - OO ClassInstance
    • Instance to retrieve a vector from

Description

This channel is able to store and retrieve a vector from an class instance.

In the properties dialog of this channel you are able to change the interface from where to get the vector.

Retrieve data

Because this channel has a Value Vector base class, it can be used normally as a Value Vector channel like you are used to. The OO ClassInstance child that is linked will allow you to select from which instance the data should be retrieved.

Store data

You can store data into this channel by using it normally as a child or using the Set Vector channel. The OO ClassInstance child will make sure the data is stored in the right instance.

CallChannel

Has no effect

Applications

Store a vector.

Remarks

Interface member variables can also be dragged onto the channelgraph from the Interfaces window/tab. Hold shift while dragging to not use base type of the channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Variables


OO SectionManager - Quest3D

OO SectionManager

Missing Documentation.
No Comments

Helper DLL. This channel does nothing in the channelgraph and should not be used in any project

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Incomplete


OO ThisClassInstance - Quest3D

OO ThisClassInstance

OO ThisClassInstance

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Incomplete


OpenURL - Quest3D

OpenURL

Contents

  • 1 OpenURL
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

OpenURL

General

Opens an Internet Browser window

Children

  • URL - Text

URL that the browser will use

Description

With this channel you are able to open an Internet browser window.

The first child of this channel will be used as the URL to open. When the channel is called, the browser window will be opened.

CallChannel

When this channel is called it will open a new Internet browser window with the set URL.

Remarks

Please make sure you call this channel once for one window. Currently the channel will always open a new browser window.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


ParticleEmitter - Quest3D

ParticleEmitter

Contents

  • 1 ParticleEmitter
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Emitter Tab
      • 1.3.2 Particle Tab
      • 1.3.3 Particle Tab - Initial Sub Tab
      • 1.3.4 Particle Tab - Limits Sub Tab
      • 1.3.5 Particle Tab - Misc Sub Tab
      • 1.3.6 Grid Tab
    • 1.4 CallChannel

ParticleEmitter

General

A particle emitter is an object that emits particles. The Particle Emitter (PE) is an advanced extension of the Particle Object channel.

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  1. Emitter Shape Object Data - 3D ObjectData
    • Objectdata that defines the shape on which the particles are emitted. Be sure to set the Shape property to Mesh (in Emitter->Shape in the dialog).
  2. Particle Direction Function - Value Vector
    • Function that describes the direction of a particle (result is a three-component vector) during its lifetime (x-axis). The lifetime (x-axis) spans from 0 to 100.
    • See “A note on particle functions” for a general explaination of Particle Functions.
  3. Particle Velocity Function - Envelope
    • Function that describes the velocity of a particle during its lifetime (x-axis). The lifetime (x-axis) spans from 0 to 100.
  4. Particle Acceleration Function - Value Vector
    • Function that describes the acceleration of a particle (result is a three-component vector) during its lifetime (x-axis). The lifetime (x-axis) spans from 0 to 100. See “A note on particle functions” for a general explaination of Particle Functions.
  5. Particle Rotation Function - Value Vector
    • Function that describes the rotation (heading, pitch, bank) of a particle (result is a three-component vector) during its lifetime (x-axis). The lifetime (x-axis) spans from 0 to 100. See “A note on particle functions” for a general explaination of Particle Functions.
  6. Particle Size Function - Value Vector
    • Function that describes the size of a particle (result is a three-component vector) during its lifetime (x-axis). The lifetime (x-axis) spans from 0 to 100. See “A note on particle functions” for a general explaination of Particle Functions.
  7. Particle Color Function - Value Vector
    • Function that describes the color (r, g, b) of a particle (result is a three-component vector) during its lifetime (x-axis). The lifetime (x-axis) spans from 0 to 100. See “A note on particle functions” for a general explaination of Particle Functions.
  8. Advanced Function Base - Value
    • Prior to sampling a result from a function, the PE Channel sets the float of the child (and thus calls the channel) to a value representing the normalized lifetime (0-100) of a particle. It is required to link this child if one wants to use something different that an envelope as a source for a vector component.
  9. Particle Flow Grid - ParticleFlowGrid (unlimited linking)
    • Flow grid on which the PE Channel operates.

A note on particle functions (ie. Particle Direction Function etc. except the Velocity Function): The PE channel expects a vector with at each component either a float value or an envelope child. If the PE Channel knows an envelope has been attached to a vector channel component (as a child), the PE Channel will sample the result value straight from the envelope channel. If no envelope has been attached and a float channel is linked to the Function Base node, then, to sample a result, the PE Channel will first set a lifetime (x-value) in the Function Base channel before it will get the result from the vector channel. Thus, using the Function Base it is possible to hook any kind of “function” to a vector component provided it delivers a float value.

Example of a possible function: a color function is attached to the PE Channel by means of a vector channel with an envelope as its first child (Red component), a constant value as its second child (Green component) and another Float Channel as its third child (Blue component). The Function Base channel is attached to some channelstructure that generates a value based on the particle lifetime (= function base) that in its turn is attached to the Blue component of the vector.

As soon as a value is linked as the "Advanced Function Base" child the emitter will asume that envelopes are not used to compute the values.

Description

Basically, the channel provides particle position, orientation and shape information that is used by a Particle Renderer channel (Particle Sprite Renderer, Particle Object Renderer, Particle Line Beam Renderer and Particle Sprite Beam Renderer).

The dialog consists of the following main tabs: Emitter, Particle and Grid.

Emitter Tab

This tab holds all properties that apply to the particle emitter object.

Emitter Period Period in seconds at which a new set of particles is emitted.

# Particle Per Emission Amount of particles that is emitted at every period.

Max # Particles Maximum amount of particles that can be managed at all times.

Particle Space Space in which the position, orientation and scaling of the particles is defined. Possible values are World and Local. World implies that the particles are defined relative to the position and orientation of the absolute axes of the “world”. Local implies that the particles are defined relative to the position and orientation of the axes of the Particle Emitter.

Framestep Defines the rate at which the individual particle calculations are made. The default value is 1, indicating that calculations are made at every frame. A value of 2 would mean that calculations are skipped for every second frame.

Time Scale Defines the scale factor for time. The default value is 1. A value of 2 means that the emitter operates at twice the normal speed (a particle will half as long compared to real-time) while 0.5 means that the emitter operates at half the normal speed. A value of 0 will freeze the emitter.

Correct For Missing Periods Enable this property if the emitter should compensate for all the periods it missed between two consecutive frames. If disabled, the appearance of the particle emitter (ie. a fire) might differ on high-end and low-end machines (the low-end machine fire might be less dense, as the emitter misses period and thus emits lesser particles).

Respawn Dead Particles Enable this property if the emitter should re-use dead particles. If disabled, the flow of particles will eventually dry-out.

Force Birth Enabling this property ensures that a new particle is emitted regardless of absence of a free particle. The emitter will simply recycle the oldest particle.

Frustum Clip If enabled, the visibility of the particles is dependant on the visibility of the emitter object. Thus, if the emitter object is out of view, the particles will not be rendered.

Auto Reset – Type Defines the mode of the Auto Reset. Possible values are All Dead and After Time. All Dead implies that once all particles have died, the emitter is reset. After Time implies that the emitter is reset when a certain time period has passed.

Auto Reset - After Time Time in seconds (relative to the start of emission) at which the particle emitter is reset.

Shape – Type Defines the type of shape in which the particles are emitted. Possible values are Box, Sphere and Mesh.

Box implies that the particles are emitted in a box-like shape. The dimensions of the box are defined by Width, Height and Depth.

Sphere implies that the particles are emitted in a sphere-like shape. The shape of the sphere is parameterized by a Minimal Radius, Maximal Radius and HotSpot Radius. Particles are emitted in the radius defined Minimal Radius and Maximal Radius. Two-third (67%) of the particles will be emitted in the range Minimal Radius and HotSpot Radius provided that Minimal Radius <= HotSpot Radius <= Maximal Radius.

Mesh implies that the particles are emitted at the positions of the vertices defined in the Emitter Shape Object Data child (see Children for more information).

Global Acceleration Acceleration vectors that are applied equally on all the particles of the emitter. A space can be specified per vector. An example: a global gravity force can be simulated by setting the y-component of one of the vectors to –9.8 (1 unit= 1 meter in this example) and its space to World.

Particle Tab

The Particle Tab is subdivided into three tabs: Initial, Limits and Misc (for Miscellaenious).

Particle Tab - Initial Sub Tab

The properties on this tab generally define the values a particle gets assigned when it is born.

LifeTime Life-time in seconds of a particle. Jitter defines the noise that is added to the lifetime. So, LifeTime set to 1 with Jitter set to 0.2 will result in a random lifetime ranging from 0.9 to 1.1 seconds.

Direction Direction of a particle at birth (in x, y and z components). If Away From Emitter is enabled, the initial direction of the particles will point away from the emitter object. Jitter (in x, y and z components) defines the noise that as added to the direction. So, an x-direction of 0.5 and a jitter of the x component of 0.1 will result in a random x-direction between 0.45 and 0.55.

Mass Mass in kilograms of a particle at birth. This setting is only useful if at least one Particle Flow has been linked and the particles have effect onto a grid or are effected by a grid (see Particles Affect Grid and Particles Are Affected By Grid on the Grid tab).

Heat Heat of a particle at birth. If the value is positive the particle will warmup its environment. If it’s negative, the particles will cool down its environment. This setting is only useful if at least one Particle Flow has been linked and the particles have effect onto a grid or are effected by a grid (see Particles Affect Grid and Particles Are Affected By Grid on the Grid tab).

Velocity Velocity of a particle at birth. Jitter defines the noise that is added to the velocity. So, a Velocity of 1 and Jitter of 0.2 will result a random velocity between 0.9 and 1.1.

Rotation Start defines the rotation of a particle at birth. End defines the rotation of the particle at its death. During a the lifetime of a particle the rotation values linearly change from Start to End. Rotation is specified in Heading, Pitch and Bank. A Heading of 1.0 means that the particle rotates 1.0 radians per second around the x-axis. Jitter defines the amount of noise that is added to the Start and End components. So, a Start Rotation Heading of 1 and Start Rotation Heading Jitter of 0.2 will result a random heading rotation between 0.9 and 1.1.

Size Start defines the size of a particle at birth. End defines the size of the particle at its death. During a the lifetime of a particle the size values linearly change from Start to End. Size is specified in x, y and z size. Jitter defines the amount of noise that is added to the Start and End components. So, a Start Size X of 1 and Start Size X Jitter of 0.2 will result a random x- size between 0.9 and 1.1. To constraint the noise for each channel, enabled the L (for Linked) setting. This ensures that all components receive an relatively equal amount of noise.

Color Start defines the color of a particle at birth. End defines the color of the particle at its death. Press either Color buttons to bring up a Color Picker dialog from which one can select a color. During a the lifetime of a particle the color values linearly change from Start to End. Color is specified in r (red), g (green) and b (blue). Jitter defines the amount of noise that is added to the Start and End components. So, a Start Color R of 0.5 and Start Color R Jitter of 0.2 will result a random Red between 0.4 and 0.6. To constraint the noise for each channel, enabled the L (for Linked) setting. This ensures that all components receive an relatively equal amount of noise.

Particle Tab - Limits Sub Tab

The properties on this tab define the limits of some specific values of a particle.

Absolute Velocity Defines the range (given in minimal and maximal bounding-values) of the absolute velocity of a particle. If the absolute velocity exceeds a boundary value, the absolute velocity is clamped to the boundary value, or, if Kill is enabled, the particle is killed.

Absolute Acceleration Defines the range (given in minimal and maximal bounding-values) of the absolute acceleration of a particle. If the absolute acceleration exceeds a boundary value, the absolute acceleration is clamped to the boundary value, or, if Kill is enabled, the particle is killed.

Absolute Size X Defines the range (given in minimal and maximal bounding-values) of the x component of the size of a particle. If the x-size exceeds a boundary value, the x-size is clamped to the boundary value, or, if Kill is enabled, the particle is killed.

Absolute Size Y Defines the range (given in minimal and maximal bounding-values) of the y component of the size of a particle. If the y-size exceeds a boundary value, the y-size is clamped to the boundary value, or, if Kill is enabled, the particle is killed.

Absolute Size Z Defines the range (given in minimal and maximal bounding-values) of the z component of the size of a particle. If the z-size exceeds a boundary value, the z-size is clamped to the boundary value, or, if Kill is enabled, the particle is killed.

Particle Tab - Misc Sub Tab

This tab holds some miscellaenious particle properties.

Vorticity The emitter can apply vorticity forces onto its particles. Particles will appear to be “sucked” towards the centre of the vortex. The centre of the vortex-axis is defined by the y- axis of the localspace of the emitter.

Vorticity- Velocity Defines the velocity of the vortex in units per second. A value of 0 disables vorticity forces.

Vorticity- Suction Defines the suction force per second towards the centre of the vortex.

Vorticity- Y-Factor Noise value affecting the shape of the vortex. The default value of 1 results in a “conventional” vortex shape.

Events- “When particle is killed” When a particle is killed it can fade-out (enable Fade-out property) and/or size-out (enable Size-out property) during a certain time-period (specified by Kill-period in seconds).

Events- “When particle is born” When a particle is born it can fade-in (enable Fade-in property) during a certain time-period (specified by Birthl-period in seconds).

Texture Switching Using the Particle Sprite Renderer it is possible to subdivide a surface into animation frames. One can, for example, pack an animation of a flame consisting out of 16 frames in one texture. The Particle Emitter can in turn set the animation frame of each individual particle. Having unique out-of-sync animations for every individual particle greatly enhances complexity.

Texture Switching – Start Frame Texture Frame of a particle at birth. Jitter defines the amount of noise that is added to the value. So, Start Frame set to 2 and Jitter set to 1 results in a random Start Frame in the range 0-1.

Texture Switching- Frame Count Number of animation frames packed into the surface.

Texture Switching- Speed Animation speed in frames per second. A speed of –1.0 results in reverse playback of the animation. Jitter defines the amount of noise that is added to the value. So, Speed set to 2 and Jitter set to 1 results in a random Speed in the range 0-1.

Texture Switching- Mode Mode of playback. Possible values are Stop, Loop and Ping-Pong. When the mode is set to Stop, the animation playback will stop once it reaches the last frame. If Loop is set, animation playback will rewind to the Start Frame once it reaches the last frame. From there, playback will continue. If Ping-Pong is set, animation playback will reverse once it reaches the last frame and will reverse again when it reaches the Start Frame and so on.

Grid Tab

The grid tab shows all properties that apply to the handling of the particles of this emitter (!) in one or more linked flow grids. Note that the settings will only have effect if at least one flowgrid is attached to the particle emitter channel.

Following is a short explaination on the semantics of the Flow Grid. Consult the help of the Particle Flow Grid for a more detailed information on this subject.

When a flow grid channel is attached to the particle emitter channel, the particle emitter will “pass” each particle to the flowgrid. The flowgrid will then accumulate all forces that have any impact on the particle (Forces section). From this accumulated force the flow grid calculates the new particle parameters (Feedback from Grid section). Furthermore, the flowgrid determines the feedback a particle has ON the grid.

While in a grid, a particle is subjected to four different kinds of forces: static forces, actor forces, particle actor forces and diffuse forces. Static forces, are, as the name implies, forces that stay unchanged over time. Static forces are computed once by the Particle Flow Grid channel (as a pre-step) from a possibly linked Collision Object. Actor forces are created by (dynamic) actors that interfere with the flowgrid. Actor forces are samples at every frame. Particle Actor forces are forces that are dynamically created by the particles that act in the grid. A particle may experience a diffuse force when it collides with a static force.

Static Force Factor Defines the scaling factor of the static forces a particle is exposed to.

Actor Force Factor Defines the scaling factor of the actor forces a particle is exposed to.

Particle Actor Force Factor Defines the scaling factor of the particle actor forces a particle is exposed to.

Particle Are Affected By Grid Enable this property if the particles should be affected by the forces in the grid.

Particles Affect Grid Enable this property if the particles should affect the forces in the grid. One can specify a velocity range in which the particles should NOT affect the grid. This can be quit convenient is some cases. For example, a case in which one want to simulate a flow of foam (foam tends to stack) that is emitted from a hose. The stacking of the foam can be achieved by having the foam particles exercise a particle actor force onto the grid while setting the Particle In Force Velocity Damping property to a small value, say 0.01. This way, the particles will stop once they are exposed to the forces of the other foam particles. The particles should only exercise a particle actor force when they have hit the ground (velocity equals 0) or have hit other foam particles and not while they are still in the air (velocity higher than 0). To achieve this, the range should be set from 0.1 to any values higher than the maximum possible particle velocity.

Side note: setting the minimum range value higher than the maximum range value will indicate that the particles will always affect the grid (provided that the Particles Affect Grid property is enabled).

Feedback from Grid Besides the straightforward application of the basic flowgrid forces onto the particle, the flow grid can also apply additional forces onto the particle, like velocity damping or diffuse forces. Furthermore, it is possible to have the flow grid adjust the particle size and rotation based on the impulse on the particle (e.g. a particle colliding with a wall shrinks, or, a particle experiencing a sudden high acceleration stretches).

Velocity Damping Defines the damping factor that is applied onto a particle velocity at every frame.

Allow Multiple Emit Positions Enabling this property will result in dynamic creation of new emitter positions based on appearance or disappearance of heat sources in the flowgrid. By default the particle emitter emits from a single location (its position in the world). If a certain spot in the flow grid exceeds or subceeds a critical heat then the flow grid will pass this position to the particle emitter. The particle emitter will then add or remove the new locations. It will appear as if multiple instants of the particle emitter are at multiple positions.

Static In Force Velocity Damping Defines the damping factor that is applied onto a particle velocity at every frame when it is subjected to static forces. For example, a value of 0 will halt the movement of the particle, as if it collides with the static geometry.

Actor In Force Velocity Damping Defines the damping factor that is applied onto a particle velocity at every frame when it is subjected to actor forces. For example, a value of 0 will halt the movement of the particle, as if it collides with an actor.

Particle Actor In Force Velocity Damping Defines the damping factor that is applied onto a particle velocity at every frame when it is subjected to particle actor forces. For example, a value of 0 will halt the movement of the particle, as if it collides with another particle.

Diffuse Treshold Defines the minimal velocity of a particle from which a diffuse force is applied. A diffuse force is randomly determined at each frame for each particle.

Diffuse Factor Defines the scaling factor of the diffuse force.

Shape Feedback – Enabled Enables feedback of the flow grids onto the shape of a particle.

Shape Feedback – Delta Rotation Factor Defines the scaling factor of the rotation velocity.

Shape Feedback – Delta Size Factor Defines the scaling factor of the size velocity.

Shape Feedback – Maximum Absolute Delta Rotation Defines the upperbound value of the rotation velocity.

Shape Feedback – Maximum Absolute Delta Size Defines the upperbound value of the size velocity.

CallChannel

Calling this channel will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Particles | Objects and Rendering


ParticleEmitterCommand - Quest3D

ParticleEmitterCommand

Contents

  • 1 ParticleEmitterCommand
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

ParticleEmitterCommand

General

Set properties of the ParticleEmitter channel during run-time.

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  1. Target emitter - ParticleEmitter
    • The actual particle emitter channel that needs to be affected
  2. Depends on selected setting - Depends on setting
    • Most setting will require you to link one or more Value children.

Description

With this channel you can manipulate the properties of a ParticleEmitter channel during execution of your project. You can select one of the command from the properties dialog. You will need to link a ParticleEmitter channel first, and then a number of Value channels as children.

Take a look at the Value for the description of the properties you can change.

You can tell what children to link in the properties dialog, the value are between ( and )

CallChannel

When this channel is called, the configured properties will be changed.

Applications

Manipulate complex particles during run-time.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Particles | Commands and Settings


ParticleFlowGrid - Quest3D

ParticleFlowGrid

Contents

  • 1 ParticleFlowGrid
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Properties Window
    • 1.5 CallChannel

ParticleFlowGrid

General

The Particle Flow Grid encapsulates a grid of forces that are applicable to particles originating from ParticleEmitter channels. By setting a couple of high level parameters, a great range of flows (and other effects) can be simulated.

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  1. Grid Subject - DB Value
    • Collision object from which static forces are extracted. The static forces are computed only once.
  2. Grid Actor - 3D Object (unlimited linking)
    • Object that dynamically interferes with the grid, influencing the forces in the grid.

Description

The particle flow grid divides a certain space (defined by the collision object) into equally sized sectors. Every sector encompasses the forces that are present in its space.

While in a grid, a particle is subjected to three different kinds of forces: static forces, actor forces and particle actor forces. Static forces, are, as the name implies, forces that stay unchanged over time. Static forces are computed once by the Particle Flow Grid channel (as a pre-step) from a possibly linked Collision Object. Actor forces are created by (dynamic) actors that interfere with the flowgrid. Actor forces are samples at every frame. Particle Actor forces are forces that are dynamically created by the particles that act in the grid.

A particle emitter will “pass” each of its particles to the flowgrid. The flowgrid will then accumulate all forces that have any impact on the particle. From this accumulated force the flow grid calculates the new particle parameters. Furthermore, the flowgrid determines the feedback a particle exercises on the grid.

Properties Window

In the properties window the following can be configured:

Resolution - The resolution (x, y and z) defines the resolution in sectors for each dimension of the grid. The higher the resolution in a certain dimension, the more detailled the flow in that dimension is. Please note, that the performance-penalty of the grid is proportional to the amount of sectors it consists of. One needs to press the Generate Grid button for the settings to take effect.

Scale - Defines the scaling factors of the dimensions of the grid- sectors. This way, it is possible to have the grid extent beyond the size of the static object it is generated from. One needs to press the Generate Grid button for the settings to take effect.

Show Grid - Enabling this property will show the grid’s structure in the Animation Section.

Show Static Forces - Enabling this property will show the static forces in the of the grid in the Animation Section. If a grid sector contains a certain amount of static force then a small cross will be drawn at its position. The brighter the color of the cross, the stronger the static force. Set Max Force to the maximum amount of static force a sector can have. A Max Force of for example 1.0 means, that the brightness of the cross will linearly change from black – no static force- to full-bright for a static force of 1.0.

Show Actor Forces - Enabling this property will show the actor forces in the of the grid in the Animation Section. If a grid sector contains a certain amount of actor force then a small cross will be drawn at its position. The brighter the color of the cross, the stronger the actor force. Set Max Force to the maximum amount of actor force a sector can have. A Max Force of for example 1.0 means, that the brightness of the cross will linearly change from black – no actor force- to full-bright for an actor force of 1.0.

Show PartActor Forces - Enabling this property will show the particle actor forces in the of the grid in the Animation Section. If a grid sector contains a certain amount of particle actor force then a small cross will be drawn at its position. The brighter the color of the cross, the stronger the particle actor force. Set Max Force to the maximum amount of particle actor force a sector can have. A Max Force of for example 1.0 means, that the brightness of the cross will linearly change from black – no particle actor force- to full-bright for a particle actor force of 1.0.

Combustion Treshold - Defines the treshold at which an emitter location is generated (heat exceeds treshold) or removed (heat subceeds treshold). The emitter location are “passed” to all emitter channels that are a parent of the flow grid. Depending on their settings, they can us them as additional emitting sources. Please refer to the Particle Emitter help for more information on this.

Actor Force Damping - Defines the damping that is applied onto all actor forces at every frame.

Particle Actor Force Damping - Defines the damping that is applied onto all particle actor forces at every frame. Bilinear Interpolate Forces: When enabled, the grid will linearly average the forces between adjacent sectors. This will produce a more smooth flow and can best be enabled for low resolution grids. It has a small performance cost.

CallChannel

Will have no effect

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Particles | Objects and Rendering


ParticleLineBeamRenderer - Quest3D

ParticleLineBeamRenderer

Contents

  • 1 ParticleLineBeamRenderer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

ParticleLineBeamRenderer

General

The Particle Line Beam Renderer takes the position, orientation and size information of the particles from a Particle Emitter channel and connects 1 pixel wide lines between them. The lines connect chronologically adjacent particles.

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  1. Particle Emitter - ParticleEmitter
    • Particle Emitter from which particle information is taken

Description

The Particle Line Beam Renderer delivers Objectdata to its parent. Usually the parent is a Surface.

The renderer connects the particles based on their time of emission. So, the particle emitted most recently (particle n) is connected to the particle that was emitted before particle n and so on.

CallChannel

Not supported

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Particles | Objects and Rendering


ParticleObject - Quest3D

ParticleObject

Contents

  • 1 ParticleObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

ParticleObject

General

Creates moving particles from an emitter shape.

Children

  1. Reset System - Value
    • When this child is set to one, the particle system will reset.
  2. Use Normalize Velocity - Value
    • Normalizes the speed for all the particles. If the speed is not normalized it depends on how the particle is removed from the object center.
  3. Emmiter Shape ObjectData - 3D ObjectData
    • Objectdata channel to determine the shape and particle count.
  4. Particle BirthRate - Value
    • The number of particles that will emit in 1/25th second.
  5. Particle Gravity - Value
    • A negative value will make the particles drop. A positive value will make the particles rise (good for smoke).
  6. Particle LifeTime - Value
    • The amount of time each particle remains visible in 1/25th seconds.
  7. Particle Velocity - Value
    • The position in the emitter shape determines the direction of the particle. How far it is removed from the center determines the relative speed to the other particles. If 'velocity normalize' is turned on the speed is the same for all particles. This value multiplies the speed of the particles. You can speed up or slow down particles using this value.
  8. Particle Velocity Randomize - Value
    • The amount of randomization of the velocity of the particles. The direction is also randomized.
  9. Particle Size - Value
    • The size of the particles at the point they are created
  10. Particle Ending Size - Value
    • The size of the particles at the point they die.
  11. Particle Size Randomize - Value
    • The amount of randomization for the size of the particles at their creation.
  12. Number of Particles Alive - Value
    • This value is updated each frame and holds the number of particles that are alive. This value can be used to determine the light intensity of a particle object for example.
  13. Start Color - Value Vector
    • The color of the particles at their creation point.
  14. End Color - Value Vector
    • The color of the particles at the point they die.
  15. Explode Count - Value
    • The number of times this particle emits before you have to reset the emitter. When you set this value to 1 the particle object will emit only once. When you set this value to 0 the object will emit endlessly.
  16. Particle Direction - Value Vector
    • Give a direction the particles will travel to.

Description

Particle examples

When you move an object with particles it leaves a trail.

This channel creates moving particles from an emitter shape. The particles are squares that are directed towards the camera. The bigger the square the bigger the particle. In most cases you should turn z-buffer write off for particles. You can do this in the Surface Properties window.

The particle object is an 3D ObjectData you need to specify the textures and blending modes for the surface in the object section(see:Surface Properties).

Sparks rendered with z write turned ON

The same sparks with z write turned OFF

You do not have to link all the children to this channel. You can also fill in the values in the dialog. The values are saved with the channel. If you want to animate one of the values you must link an envelope to it.

CallChannel

Calling this channel will render the particles with the current material, current world matrix , current camera and current lights. It also updates the “particle alive” value.

Remarks

  • The particle shape and blending setting must be set in the surface that is using the particle object.
  • Remove a channelgroup from memory that contains the object data used as the first child after the particle is rendered (all children are used).

Applications

Smoke, Fire, neon text, twinkling stars etc..

Tips

Try making particles objects that use more than one surface. This way you can mix different particle emitters in one object.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Particles | Objects and Rendering


ParticleObjectRenderer - Quest3D

ParticleObjectRenderer

Contents

  • 1 ParticleObjectRenderer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

ParticleObjectRenderer

General

The Particle Object Renderer takes the position, orientation and size information of the particles from a Particle Emitter channel and renders the particles as objects.

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  1. Particle Emitter - ParticleEmitter
    • Particle Emitter from which particle information is taken
  2. Object Data - 3D ObjectData
    • Object data defining the geometry to render for every particle

Description

The Particle Object Renderer delivers Objectdata to its parent. Usually the parent is a Surface.

CallChannel

Not supported

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Particles | Objects and Rendering


ParticleSpriteBeamRenderer - Quest3D

ParticleSpriteBeamRenderer

Contents

  • 1 ParticleSpriteBeamRenderer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

ParticleSpriteBeamRenderer

General

The Particle Sprite Beam Renderer takes the position, orientation and size information of the particles from a ParticleEmitter channel and renders the particles in the form of camera oriented sprite-beams. The sprite beams connect chronologically adjacent particles.

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  1. Particle Emitter - ParticleEmitter
    • Particle Emitter from which particle information is taken

Description

The Particle Sprite Beam Renderer delivers Objectdata to its parent. Usually the parent is a Surface.

The renderer connects the particles based on their time of emission. So, the particle emitted most recently (particle n) is connected to the particle that was emitted before particle n and so on.

In the properties window you can configure the Hinge Offset: Determines the offset of the hinge (that connects two beamsegments between two particles) from the border of the beam.

CallChannel

Not supported

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com


ParticleSpriteRenderer - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

ParticleSpriteRenderer

From Quest3D

Jump to: navigation, search

Contents

  • 1 ParticleSpriteRenderer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Properties
    • 1.5 CallChannel

ParticleSpriteRenderer

General

The Particle Sprite Renderer takes the position, orientation and size information of the particles from a Particle Emitter channel and renders the particles in the form of camera oriented sprites (a.k.a. billboards).

This channel can't be configured with Quest3D Lite Edition or Professional Edition, only with Quest3D Enterprise Edition, better or equivalent

Children

  • Particle Emitter - ParticleEmitter

Particle Emitter from which particle information is taken

Description

The Particle Sprite Renderer delivers Objectdata to its parent. Usually the parent is a Surface.

The channel has been designed to be able to handle packed textures. This means that one could pack a texture animation – for instance a fire- into one texture. The Particle Emitter channel manages an individual frame counter for each particle. From this framecounter, the sprite renderer determines the accompanying u/v coordinates representing the frame in the subdivided texture. This way it is possible to have a different playback per particle. One particle could for instance start at frame 5 while another starts at frame 1 etc.

Multiple animation frames must be packed as follows:

The animation sequence starts at the frame in the upper-left corner (frame 0), plays thje frames in a left-to-right reading manner and ends at the frame in the lower-right corner.

Properties

You can open the properties window to change the following properties:

Texture U Subdivision - Amount of subdivision in u (horizontal in u/v space) dimension of the texture. A value of, for instance, 4 would indicate that there are 4 animation frames for each row in the texture.

Texture V Subdivision - Amount of subdivision in v (vertical in u/v space) dimension of the texture. A value of, for instance, 4 would indicate that there are 4 animation frames for each column in the texture.

Optimize For - Optimization mode for the particle geometry. Possible values are Fillrate and Triangle Count. With Fillrate particles are rendered as quads (2 triangles per particle). With Triangle Count particles are rendered as triangles (1 triangle per particle) saving 1 triangle per particle. The drawback of 1 triangle per particle however is that this triangle has to be twice the size of the particle size and that only half of its surface effectively contains the particle texture. Furthermore, when the renderer optimized for triangle count it can’t subdivide the texture (so the Texture U Subdivision and Texture V Subdivision values are discarded). Currently the bottleneck of most videocards lies in fillrate instead of triangle calculations, so Fillrate optimization might be the best choice.

CallChannel

Not supported

One Level Up - Channel List

Back to Main Index


Patriot Command - Quest3D

Patriot Command

Contents

  • 1 Patriot Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Start Patriot
      • 1.5.2 Stop Patriot
      • 1.5.3 Get connection status
      • 1.5.4 Get position and rotation vector
  • 2 Templates
  • 3 Example
  • 4 External links

Patriot Command

Children

  1. All Types Channel – Depends on the selected command.

Description

This Channel is used to interact with the Polhemus Patriot motion tracker.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the combobox in the Patriot Command channel interface

Change Channel name to command type

When a command is selected, the channel name will be set to the name of the command.

Command to Execute

This selects the command type to execute when the channel is called. Then next paragraph will describe the possible commands.

Commands

Start Patriot

This command starts receiving data from a connected Patriot device.

Stop Patriot

This command stops receiving data from a connected Patriot device

Get connection status

Determines whether the connection has been established and the engine is receiving data from the Patriot device.

Children

  1. Value - This channel contains the connection status. (1=connected, 0=disconnected).

Get position and rotation vector

This command stores the position and rotation of a sensor in vectors.

Children

  1. Value - The number of the sensor to receive the position and rotation from.
  2. Value Vector - Vector in which the position of the sensor will be stored.
  3. Value Vector - Vector in which the rotation of the sensor will be stored.

Templates

Templates for all commands can be found in the 'Templates' Tab in the Channel section under 10 - VR Edition -> Trackers -> Patriot

Example

An example can be found in <YourQuest3DFolder>/Examples/VR/Polhemus Patriot.cgr

External links

  • Patriot motion tracker on the Polhemus website

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR | Commands and Settings | New in version 3.6


Tutorials/Object Oriented Programming/Pattern Introduction - Quest3D

Tutorials/Object Oriented Programming/Pattern Introduction

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Patterns
    • 1.1 Introduction
    • 1.2 History, resources and links
    • 1.3 Definition (According to GoF)
    • 1.4 Pattern types
    • 1.5 Examples
      • 1.5.1 Creational Patterns
      • 1.5.2 Structural Patterns
      • 1.5.3 Behavioral Patterns

Patterns

Introduction

As you may figure out when you're going to use an 'Object-Oriented'-approach in your Quest3D-projects, OO becomes really useful in projects which are big and where segments have to be repeated or hierarchy is required.

In the software industry you'll not be the first one to be challenged by some on the problems and limitations of the use of the generic 'data classes'. Early in the developmentcycle you'll want 'special classes' which not so much contain data, but have special properties and operations on classes which are the pure 'data classes'. These kind of concepts are defined as "Design Patterns", or "Patterns" for short.

History, resources and links

Patterns originated as an architectural concept defined by Christopher Alexander in 1979, but really got flight in the ICT industry after the book "Elements of Reusable Object-Oriented Software" by "Group of Four" in 1995. They we're the first to define a 20-odd patterns to be reused in most software design and therefor is tought of as the original first source for Design Patterns.

Some solid reference for information on Design Patterns:

  • "Design Patterns: Elements of Reusable Object-Oriented Software", GoF, 1995 [1];
  • "Design Patterns" on wikipedia [2]
  • "Sourcemaking", Simple examples accompanied with explanatory video's [3]

Definition (According to GoF)

In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Algorithms are not thought of as design patterns, since they solve computational problems rather than design problems.

Pattern types

If you look at the available Design Patterns, you can classify patterns by two criteria:

  • Purpose: reflects what a pattern does;
  • Scope: specifies wether the pattern applies primarily to classes or objects.

Since Quest3D is always at 'run-time' and thus a classification based on run-time vs compile-time is irrelevant, the only interesting classification for us is the classification based on purpose.

The classification based on purpose knows three variants:

  • Creational: concerns the process of object creation;
  • Structural: deals with the composition of classes or objects;
  • Behavioral: characterize the ways in which classes or objects interact and distribute responsibility.

Examples

Some examples of the available design patterns (some will be worked out in depth in the following tutorials):

Creational Patterns

Factory

Deals with the problem of creating objects without specifying the exact class of the object that will be created.

Builder

Decouples the complexity of 'construction of and object' with it's representation, so that the same construction process can create different representations.

Singleton

Ensures a class only has one instance, and provide a global point of access to it.

Structural Patterns

Manager

Defines logic for a selection of data classes. This pattern not only manages the data classes using a container construct, but also manages all the operations ON these data classes.

Composite

Allows a group of objects too be treated the same way as a single instance of the object.

If you find that you are using multiple objects in the same way, and often have nearly identical code to handle each of them, then Composite is a good choice.

Facade

Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

Proxy

A proxy, in its most general form, is a class functioning as an interface to another thing. The other thing could be anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate.

A well-known example of the proxy pattern is a smartpointer-object.

Model-View-Control

In complex computer applications that present a large amount of data to the user, a developer often wishes to separate data (model) and user interface (view) concerns, so that changes to the user interface will not affect data handling, and that the data can be reorganized without changing the user interface. The model-view-controller solves this problem by decoupling data access and business logic from data presentation and user interaction, by introducing an intermediate component: the controller.

Behavioral Patterns

Command

A command pattern is used where objects represents actions. A Command-object encapsulates and action and it's parameters. The command-pattern is often used when transactional-behaviour is required.

Interpreter

An interpreter is a pattern which has to do with language recognition or file input. When using XML for your configuration files, for instance, a reader-object "XML parser" is seen as the interpreter of your input files.

Observer

Also know as the 'publish/subscribe'-mechanism. The pattern is mainly used to implement a distributed event handling system.

Hierarchical Visitor

in graphicsland also know as a Scenegraph

Defines a hierarchical construct with several traversal techniques to make iteration through this hierarchical construct possible. This pattern is often used in the rendering-loop of a 3D graphics engine, where you traverse the hierarchical structure backwards to update and cull the scene, after which you traverse the structure forward to render the active objects.

Categories: Tutorials | OO


Tutorials/Object Oriented Programming - Quest3D

Tutorials/Object Oriented Programming

< Tutorials(Redirected from Portal:Object Oriented)
Jump to: navigation, search

Contents

  • 1 Object Oriented Programming
    • 1.1 Part I: Getting started
    • 1.2 Part II: Basic Concepts
    • 1.3 Part III: Patterns
    • 1.4 Part IV: Advanced Concepts
    • 1.5 Part V: Putting it All Together
    • 1.6 OO GUI reference

Object Oriented Programming

Part I: Getting started

  • Introduction to Object Oriented Development in Quest3D

Part II: Basic Concepts

  • Object creation and rendering
  • Specialization (also known as overrides)
  • Inheritance

Part III: Patterns

  • Introduction
  • Singleton
  • Factory
  • Manager
  • Observer
  • Facade
  • Hierarchical Visitor

Part IV: Advanced Concepts

  • Dynamic object management
  • Collision Detection
  • Plug-in based architecture
  • Resource management
  • Multi-pass rendering
  • Multi-target rendering

Part V: Putting it All Together

  • Asteroids

OO GUI reference

  • OO Editor The editor to create and manage interface and class definitions
  • Project Tree Tree to navigate through channelgroups, interfaces and interface members as well as drag/drop functions for the ChannelEditor


Tutorial Manual - Quest3D

Tutorial Manual

(Redirected from Portal:Tutorial Manual)
Jump to: navigation, search
Tutorials/Manual


Tutorials/Videos - Quest3D

Tutorials/Videos

< Tutorials(Redirected from Portal:Video Tutorials)
Jump to: navigation, search

Video Tutorials

Welcome to our set of video tutorials, which help you to learn more about Quest3D. You can download the source and end-source of each tutorial as well, to follow the instructions step by step or play around a bit with the source.

Have fun exploring and learning how to build a Quest3D application!

Download Video Tutorials

Some tutorials only consist of a movie(.WMV) file. For other tutorials you need files that are available in a .ZIP file with the same name.

The tutorial files are available here: ftp://quest3d.nl/Downloads/videotutorials/

Remarks

The video tutorials are based on Quest3D 3.0e. Moving from Quest3D 3.0 to Quest3D 3.5 is a small step, so the tutorials are valuable for 3.5 users as well.

You can follow the video tutorials using a higher version of Quest3D 3.0, but if you want to use Quest3D 3.0, download it here:

Categories: Tutorials | Reference Manual


Reference Manual/Customization/Preferences - Quest3D

Reference Manual/Customization/Preferences

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Preferences
    • 1.1 General
    • 1.2 General Settings (Quest3D)
    • 1.3 Channels Section
    • 1.4 Animation Section
    • 1.5 Object Section

Preferences

General

Through the "Options" menu you can select "Preferences..." where you can change a selection of options that will allow you to customize some parts of Quest3D. In this version of Quest3D the following can be configured:

General Settings (Quest3D)

There are a number of options here you can select and de-select. Here is some more information on these options:

  • Splash Screen - With this option you can control if you want to see the "Splash Screen" when you start Quest3D. Please note that Quest3D has two different screens that will be shown when Quest3D is started. The first can't be turned off and is called the "Loading Screen"; a static picture that shows that Quest3D is loading. When Quest3D is loaded the "Splash Screen" will show a 3D animation with our logo and some more information. This second screen will be shown when this option is checked
  • Auto Channel Download - Quest3D will download channels (plugins) when there are channels used in a project that are not on your hard disk. Without these channel Quest3D will not be able to run, so it will attempt to download these from the central Quest3D server (or other server when specified in the project). If you don't want this automatic behavoir, uncheck this options
  • Enable Maximum Frame Rate - Enabling this feature will increase the maximum frame rate the Quest3D editor can achive. If the windows system is very busy besides Quest3D this can result in jerky movement.
  • Help - Always on top - When checked, the in-program help will be shown as "Always on top". This means that when the main Quest3D window is activated again, the help window will stay in front of it so that you can read it and make changed in Quest3D at the same time.
  • Recent file list - Here you can configure how many items should appear in the recent file list. This list can be found in the "File" menu and holds all previously opened project files for quick loading previous projects.
  • Tablet/Touchscreen support - Tablets and touchscreens have a higher resolution as a mouse. By using this option the relative mouse position is calculated with absolute coordinates.

Channels Section

This screen will hold all options that are used in the Channel Section of Quest3D.

  • Channel Graph Appearance - Here you can select the colors of the Channel Graph (the part where you link channels). With the "Show Axis" option you can control if you want to see a horizontal and a vertical line that crosses in the middle of the channel graph. The "Graph Font" button will allow you to change the font of the names and types of the channels in the graph view. The "Text in items" option will make Quest3D draw the text inside the lines of a channel, sometimes useful to make things more readable.
  • Zoom and move at once - This option will turn on a special zoom mode; When you zoom the Channel Graph View with the right mouse button (not the scroll wheel) you will zoom and move the view to the point where the mouse pointer is. This will allow you to zoom to a certain point in the channel graph.
  • Use mouse scrollwheel - If you turn on this option the scroll wheel of the mouse will be used for zooming.
  • Draw Directory Links - This option will turn on the drawing of links that go more that a single directory/folder deep. If you have a large graph, you might want to turn this off for a while.
  • Snapshots - Here you can configure the snapshot system of Quest3D. All snapshots are saved to disk in the "History" folder of your Quest3D installation directory. With the first option you can select the maximum number of snapshots should be saved. When this maximum is reaches, the oldest one will be deleted. You can also configure the amount of seconds that should elaps before an automatic snapshot is taken. With the "Erase History" button you are able to clear the entire "History" folder (this will delete all history ever created by Quest3D).
  • Enhanched Copying - With the "Normal Copy/Past" method you are able to copy and past channels, but not shortcuts and directories. When you enable this "Enhanched Copying" option you will be able to copy directory and shortcuts (only when the original is also selected). In larger projects a copy and paste operation might take a while.
  • File Converting Order - If you save a file you have the option to select certain "Converters". A converter will convert the saved file to another format and sometimes add information. Make sure that compression converters are always placed last using the "Move Down" and "Move Up" buttons when you've selected a converter. You can also change the default state of a converter. If you want the "ZipCompression" converter ON by default you can select this by making sure the line is checked.

Animation Section

  • 3D view Helper Items - Here you can select what "Helper Items" are visible by default in the Animation Section. An example is an helper item is the "Motion Path"; a line that will show the path an object will follow when animation is started. You are able to turn them on and off in the animation section itself.
  • Mouse Speed - You can use these three values to multiply speed of altering motions.
  • Non Camera display - When the internal camera of the animation section itself is used this setting will be used to show the scene.
  • World Scale - You can scale the world your animation is created in. When you scale the world up, all helper items and mouse movements are more accurate. This setting is the default world scale. In the animation section itself you are able to change the world scale with the toolbar.
  • Motion Control Options - You can select if you want the animation slider bar to automatically set the correct start and end value if you select and item
  • 3D View Background Color - You can change the color of the background that is showed default in the animation section.

Object Section

  • Items - If the "Show Selection" is checked you are able to see the bounding box of the surface that you selected. Multiple surfaces are not shown by a bounding box. If "Show Grid" is checked, the grid is shown by default.
  • 3D View Background Color - Click on the color to change the default background color of the object mode.
  • Grid Spacing - This affects how fast you can move the view center.
  • Object display - Here you can select how the object should be shown by default. You can also change this setting in the object section itself.

Back to Main Index

Category: Reference Manual


Present - Quest3D

Present

Contents

  • 1 Present
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Remarks
    • 1.5 Applications
    • 1.6 Tips

Present

General

Present your rendered view into a rectangle on your screen.

Description

Use this channel to copy the backbuffer to the user's screen (window or full-screen). Channels like 3D Render, ClearScreen will put all output on a "Backbuffer". When all painting to the backbuffer is done you must call this channel to make it visible. So, when using DirectX 8.0 channels you will always need this channel.

CallChannel

Calling the channel will actually present the backbuffer to the user.

Remarks

Quest3D does its own present in the SceneEditor if you run a group that does also run present itself you can expect strange results. Make sure you use NotInEditor to determine whether or not to use the present channel.

Applications

Show everything on the backbuffer

Tips

  • There are multiple templates available that use this channel the correct way.
  • You will need to call this channel only once per frame.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Primitive - Quest3D

Primitive

Contents

  • 1 Primitive
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Box
      • 1.3.2 Square
      • 1.3.3 Sphere
      • 1.3.4 Cylinder
      • 1.3.5 Torus
      • 1.3.6 Polygon
      • 1.3.7 Lines
      • 1.3.8 Pixel Perfect Square
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

Primitive

General

Creates a primitive object data useable as objects without loading an external object.

Children

  1. Textureset 0 - Matrix
    • Matrix of TextureSet 0. Used to rotate and move the texture.
  2. Textureset 1 - Matrix
    • Matrix of TextureSet 1, used to rotate and move the texture
  3. Primitive Complexity - Value
    • Depending on the type of the primitive this value is used to determine the complexity of the primitive.

Description

The base type of this channel is 3D ObjectData. The objectData defines the geometry of an object. The primitive can generate several geometry shapes. By double clicking on the channel you can select the shape.

The objectData can generate the following shapes:

Box

The box setting generates a box that has a size of 1.0 for each side. Changing the primitive complexity has no effect with this shape.

Square

The square setting generates a square that has a size of 1.0 for each side. The square is build up of two polygons. The primitive complexity has no effect on this shape.

Sphere

The sphere setting generates a sphere. The radius of the sphere is 1.0. The primitive complexity determines how many faces are used in the vertical direction. A primitive complexity of 5 results in 5 subdivisions vertically. The rest of the subdivision adapts automatically to the vertical subdivision.

Cylinder

The cylinder setting generates a cylinder with its axis in the z direction. The length of the cylinder is 1.0 and the diameter also is 1.0. The primitive complexity determines the subdivision to generate the circle shape. The subdivision along the length of the cylinder is the same as the primitive complexity divided by 4.

Torus

The torus setting generates a donut shape. The ‘hole’ of the donut is facing the z axis. The diameter of the ‘tube’ of the donut is 1.0 and the ring shape of the donut has a radius of 1.0. The subdivision of the ring shape is the same as the primitive complexity multiplied by 2. The tube subdivision is the same as the primitive complexity.

Polygon

The polygon setting generates a flat circle. The circle has a radius of 0.5. The primitive complexity determines the number of polygons that are used for the circle.

Lines

The lines setting allows you to draw lines. Link vector channels to the primitive channel to determine how the lines will be drawn. Linking 3 vectors will draw two lines. Between 1 and 2 and between 2 and 3. This can be done for invinite number of vectors.

There is a check box that allows you to flip the polygons of the shape. All polygons are single sided.

Pixel Perfect Square

This will copy a pixel perfect square over the screen.

CallChannel

Has no effect on this channel

Applications

Create simple shapes without having to import 3D models.

Tips

Also take a look at the help of the base channel type for more information about the Textureset Matrix children.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


PrintRenderBuffer - Quest3D

PrintRenderBuffer

Contents

  • 1 PrintRenderBuffer
    • 1.1 General
    • 1.2 Childeren
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

PrintRenderBuffer

General

This channel will send the Render Buffer directly to your default selected printer.

Childeren

  1. Footer Text – Text
    • This will add a footer text to the print.

Description

The current Render Buffer will be send to the default selected printer in your printer settings. The print will be done with the default settings of your printer. With the Footer Text child you can add a footer text to the print. In the dialog of the PrintRenderBuffer channel you can select also Pint border around image.

CallChannel

When called the Render Buffer will be printed.

Remarks

Make sure you call this channel only once!

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


Project Tree - Quest3D

Project Tree

Contents

  • 1 Project Tree
    • 1.1 Description
    • 1.2 Icons
    • 1.3 Common functionality
      • 1.3.1 Adding a channelgroup
      • 1.3.2 Selecting a channelgroup
      • 1.3.3 Removing a channelgroup
      • 1.3.4 Set as start group
    • 1.4 Drag and drop functionality
    • 1.5 Related documentation

Project Tree

Description

The Project Tree window is a substitute for the original Group List, known from versions earlier than Quest3D 4.0. The Project Tree, however has functionality to use OO related definitions, as defined in the OO Editor

To add the Project Tree, right mouseclick in a Quest3D interface tab and select Add Window->Object Orientation->Project Tree

The following picture shows an example of how an OO Quest3D application could look like in the Project Tree

Icons

For all icons used in the Project Tree, see the Icons section.

Common functionality

Using the Project Tree you can do the following Channel Group functions:

  1. Add a new ChannelGroup
  2. Select a ChannelGroup in the current Channel Editor
  3. Remove a ChannelGroup
  4. Set a ChannelGroup as start group.

Adding a channelgroup

A channelgroup can be added by selecting 'Add group' in the context menu

Selecting a channelgroup

A channelgroup can be selected by double-clicking a channelgroup in the tree or by choosing 'Select' in the Interface Tree contextmenu. The current channelgroup that is selected for editing in the Channel Editor can be recognized by the light blue color.

When a channelgroup is selected, you can also view private interfaces and private interface members in the tree. If you have private interfaces or interface members and the channelgroup is not selected, they will not be shown.

Removing a channelgroup

Removing a channelgroup can be done by pressing the 'Del' key while having a channelgroup in the Interface Tree selected, or choosing 'Remove' from the Project Tree contextmenu

Set as start group

The current selected channelgroup in the Project Tree can be set as startgroup by choosing 'Set as start group' in the Project Tree contextmenu.

Drag and drop functionality

You can drag and drop items from the Project Tree into another interface in Quest3D. Currently you can only drop items in the Channel Editor.

The following items can be dropped:

  • Channelgroups: When dropped on the Channel Editor, the channelgroup is loaded in to the editor. The channelgroup will also become the slected channelgroup in the Project Tree.
  • Interface members: When dropped on the Channel Editor, Quest3D will create the appropriate member invokation channel. This can be InterfaceChannel, InterfaceFunction, InterfaceMatrix, InterfaceText, InterfaceValue or InterfaceVector. Note that if you drag and drop a member of type InterfaceChannel, it will by default create an InterfaceChannel that has the same base type as the base type of the member. If you do not want to use the basetype of the member, hold down 'Shift' when dropping.

Related documentation

OO Editor, Object Oriented Portal

Categories: Reference Manual | Editor | OO


ProjectionMatrix - Quest3D

ProjectionMatrix

Contents

  • 1 ProjectionMatrix
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

ProjectionMatrix

General

Constructs a projection matrix for the Camera.

Children

  1. Near clipping plane distance - Value
    • This is the distance of the near clipping plane.
  2. Far clipping plane distance - Value
    • This is the distance of the far clipping plane.
  3. Zoom factor - Value
    • This is zoom factor for the camera.

Description

There are 3 values you can specify: the near clipping plane distance, the far clipping plane distance and the zoom factor Only the geometry between the far and the near clipping plane is rendered. All other geometry will not be rendered. With the zoom factor you can make a camera zoom in or out. Smaller zoom factors zoom out and larger zoom factors zoom in.

CallChannel

Calling this channel has no effect.

Remarks

The clipping planes can not be set by the Camera you need to use the projection matrix channel for this.

Applications

Specifying the zoom factor, near and far clipping planes for the camera.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


Articles/Publishing projects that dynamically load CGR files - Quest3D

Articles/Publishing projects that dynamically load CGR files

< Articles
Jump to: navigation, search

Introduction

When publishing projects, the Publish Wizard will determine which channels and 3rd party DLLs are used in the project. However, when channel groups files are loaded dynamically (for instance from a server) when the Quest3D application is running, the Publish Wizard is not able to predict all the channel and DLL dependencies. The reason is simple: the Publish Wizard is not able to know which .CGR files can possibly be loaded.

Solutions

Drag all used channels into a channel group that is included in the project

If you know what channels are going to be used, you can drag them into a channelgroup (for instance the start channel group). If you do not link those channels to anything they will not influence the application logic, but they are recognized by the Channel Wizard when publishing.

Include all channels

As of Quest3D version 3.6.1 it will be possible to choose an option to include all Quest3D channels in the published project. You can check the 'Include all channels' checkbox in the file selection page of the publisher:

A drawback of choosing this approach is the fact that the final executable will be at least 2.7Mb. In case of an executable this won't give any performance problems, but if you publish to the Web it will increase the download time of your project.

See Also

One Level Up - Articles

Back to Main Index

Category: Tutorials


Reference Manual/Publishing Quest3D Projects - Quest3D

Reference Manual/Publishing Quest3D Projects

< Reference Manual(Redirected from Publishing Quest3D Projects)
Jump to: navigation, search

Contents

  • 1 Introduction
  • 2 Project Management
  • 3 The Publish Wizard
    • 3.1 Choosing publish properties
      • 3.1.1 Title
      • 3.1.2 Publish type
      • 3.1.3 Target
    • 3.2 Selecting files to be published
  • 4 See also
  • 5 External links

Introduction

Distributing Quest3D projects can be done by 'Publishing' them. This section will explain the ins and outs of Quest3D publishing.

Project Management

If you want to correctly manage your project you should always work in directories. For every project you start, create a new directory somewhere on your hard disk.

Feel free to use sub-directories in the project directory. Note that the startgroup should be in the root directory. Other channelgroups should not be at a higher level in the directory tree.

This is an example of how your project could be built up:

In this example the 'Data' directory is a subdirectory where an XML file is stored. In this example, the .XML file is used in the project and should also be published.

The Publish Wizard

Choosing publish properties

The picture below shows the first sheet of the Publish Wizard, which allows you to edit the general properties.

The following properties can be set:

Title

The title of the project. This title will also be visible in for instance a website or executable.

Publish type

Quest3D Projects can be published to the following targets:

  • Executable: A stand-alone executable file will created. It contains all necessary files and will automatically unpack and run the project when executed.
  • Web page: A .Q3D file (a file needed to run the Quest3D in a viewer) and a sample index.html file will be created. The target directory will also contain a file called createControl.js. This file is used in index.html to fix the Internet Explorer Eolas patent patch. If you view the index.html file in a browser, it will launch the ActiveX Control, which on its turn will, if necessary, download the viewer and run the project. Quest3D web-projects can only be run in browsers that support ActiveX technology. If the target directory differs from the project directory, all the .CGR files will be automatically protected. After protection they can no longer be edited in Quest3D. This makes the .CGR files safe for redistribution. If you publish to the project directory, no protection will be applied. If you want to deploy to an intranet environment without an internet connection, or otherwise want to avoid automatic updates in the ActiveX Control, read this article.
  • Quest3D Viewer: The publisher will create a .Q3D file and, if published to a target directory that differs from the project directory, protect the .CGR files.
  • Installer: The publisher will create a setup program that can install the Quest3D project on a target machine. If you choose this option and click the Next button, another property sheet as shown below will show up.

With the Installer property sheet, the Default install folder and Start menu path can be selected. The user may change the installation folder when running the setup program.

  • Screen saver: The publisher will create a setup program that will install the Quest3D project as a screensaver. If you choose this option and click the Next button, another property sheet as showed below will show up.

Just as with the 'Installer' option, you can select a default installation folder.

  • Also run project in preview mode will allow the screensaver to be run in the screensaver preview window in Windows.
  • Don't let screensaver stop on keypress or mousemove will prevent the screensaver from quitting when the users uses the mouse or keyboard.

Target

The target file to publish the project to. If you chose to publish to a website or viewer, all files included for publishing will be copied to the target directory. Channelgroups will be protected. Protected channelgroups cannot be edited in Quest3D, which makes them safe for redistribution.

Selecting files to be published

The next sheet in the wizard is the file selection sheet as shown below:

In the left pane there is a tree showing a directory structure that starts from the directory where your startgroup is located. Using the checkboxes you can select/deselect entire directories. Selecting or deselecing of the files to be published in each directory can be done in the right pane.

Other interface options:

  • Include: Files or extensions in this editbox will filter the files that are included by default. In the default setting, only '.CGR' files are included, but in our example we also want to include an .XML file that is located in the 'Data' directory of our project. To do so we need to add the "*.xml" extension in the include edit box. Included filenames and/or extensions are separated by a ';'. Individual files can of course be excluded when needed. Note: Each time you publish, the contents of the directory will be determined again. If you added new files that are included by default they will be published. You need to exclude each file you don't want in the published project if you included the extension by default.
  • Summary: When publishing larger projects it is sometimes handy to view a summary of all files being published. When clicking the 'Summary' button, a dialog with a list of all included files is presented in a dialog as shown below:

  • All: Check or uncheck this checkbox when you would like to select or deselect all items in the list
  • Check and Uncheck: These buttons are used when you want to check or uncheck multiple selected items.

After clicking Finish the publisher will publish your project.

See also

Publishing tutorial

External links

  • ActiveX in Wikipedia
  • Introduction to ActiveX Controls at the Microsoft Website
  • Information about the Eolas patent patch for Internet Explorer.

Category: Reference Manual


Reference Manual/Publishing Quest3D Projects - Quest3D

Reference Manual/Publishing Quest3D Projects

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Introduction
  • 2 Project Management
  • 3 The Publish Wizard
    • 3.1 Choosing publish properties
      • 3.1.1 Title
      • 3.1.2 Publish type
      • 3.1.3 Target
    • 3.2 Selecting files to be published
  • 4 See also
  • 5 External links

Introduction

Distributing Quest3D projects can be done by 'Publishing' them. This section will explain the ins and outs of Quest3D publishing.

Project Management

If you want to correctly manage your project you should always work in directories. For every project you start, create a new directory somewhere on your hard disk.

Feel free to use sub-directories in the project directory. Note that the startgroup should be in the root directory. Other channelgroups should not be at a higher level in the directory tree.

This is an example of how your project could be built up:

In this example the 'Data' directory is a subdirectory where an XML file is stored. In this example, the .XML file is used in the project and should also be published.

The Publish Wizard

Choosing publish properties

The picture below shows the first sheet of the Publish Wizard, which allows you to edit the general properties.

The following properties can be set:

Title

The title of the project. This title will also be visible in for instance a website or executable.

Publish type

Quest3D Projects can be published to the following targets:

  • Executable: A stand-alone executable file will created. It contains all necessary files and will automatically unpack and run the project when executed.
  • Web page: A .Q3D file (a file needed to run the Quest3D in a viewer) and a sample index.html file will be created. The target directory will also contain a file called createControl.js. This file is used in index.html to fix the Internet Explorer Eolas patent patch. If you view the index.html file in a browser, it will launch the ActiveX Control, which on its turn will, if necessary, download the viewer and run the project. Quest3D web-projects can only be run in browsers that support ActiveX technology. If the target directory differs from the project directory, all the .CGR files will be automatically protected. After protection they can no longer be edited in Quest3D. This makes the .CGR files safe for redistribution. If you publish to the project directory, no protection will be applied. If you want to deploy to an intranet environment without an internet connection, or otherwise want to avoid automatic updates in the ActiveX Control, read this article.
  • Quest3D Viewer: The publisher will create a .Q3D file and, if published to a target directory that differs from the project directory, protect the .CGR files.
  • Installer: The publisher will create a setup program that can install the Quest3D project on a target machine. If you choose this option and click the Next button, another property sheet as shown below will show up.

With the Installer property sheet, the Default install folder and Start menu path can be selected. The user may change the installation folder when running the setup program.

  • Screen saver: The publisher will create a setup program that will install the Quest3D project as a screensaver. If you choose this option and click the Next button, another property sheet as showed below will show up.

Just as with the 'Installer' option, you can select a default installation folder.

  • Also run project in preview mode will allow the screensaver to be run in the screensaver preview window in Windows.
  • Don't let screensaver stop on keypress or mousemove will prevent the screensaver from quitting when the users uses the mouse or keyboard.

Target

The target file to publish the project to. If you chose to publish to a website or viewer, all files included for publishing will be copied to the target directory. Channelgroups will be protected. Protected channelgroups cannot be edited in Quest3D, which makes them safe for redistribution.

Selecting files to be published

The next sheet in the wizard is the file selection sheet as shown below:

In the left pane there is a tree showing a directory structure that starts from the directory where your startgroup is located. Using the checkboxes you can select/deselect entire directories. Selecting or deselecing of the files to be published in each directory can be done in the right pane.

Other interface options:

  • Include: Files or extensions in this editbox will filter the files that are included by default. In the default setting, only '.CGR' files are included, but in our example we also want to include an .XML file that is located in the 'Data' directory of our project. To do so we need to add the "*.xml" extension in the include edit box. Included filenames and/or extensions are separated by a ';'. Individual files can of course be excluded when needed. Note: Each time you publish, the contents of the directory will be determined again. If you added new files that are included by default they will be published. You need to exclude each file you don't want in the published project if you included the extension by default.
  • Summary: When publishing larger projects it is sometimes handy to view a summary of all files being published. When clicking the 'Summary' button, a dialog with a list of all included files is presented in a dialog as shown below:

  • All: Check or uncheck this checkbox when you would like to select or deselect all items in the list
  • Check and Uncheck: These buttons are used when you want to check or uncheck multiple selected items.

After clicking Finish the publisher will publish your project.

See also

Publishing tutorial

External links

  • ActiveX in Wikipedia
  • Introduction to ActiveX Controls at the Microsoft Website
  • Information about the Eolas patent patch for Internet Explorer.

Category: Reference Manual


SDK/Quest3D Core Engine - Quest3D

SDK/Quest3D Core Engine

< SDK(Redirected from Quest3D Core Engine)
Jump to: navigation, search

Quest3D Core Engine Reference

The "Quest3D Engine" is often used for the most basic function and to access a number of useful management functions.

Classes

EngineInterface Interface to the Quest3D Engine

Structs

MessageInfo Holds information of a window message that was received through the event system

Back to Main Index


SDK/Quest3D Core Engine - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Quest3D Core Engine

From Quest3D

< SDK
Jump to: navigation, search

Quest3D Core Engine Reference

The "Quest3D Engine" is often used for the most basic function and to access a number of useful management functions.

Classes

EngineInterface Interface to the Quest3D Engine

Structs

MessageInfo Holds information of a window message that was received through the event system

Back to Main Index


Quest3D Plug-in for 3D Studio MAX - Quest3D

Quest3D Plug-in for 3D Studio MAX

Exporting

Information
  • Documentation
  • FAQ
  • Forum
How to
  • Export lightmaps
  • Export transparency

Description

Quest3D Extensions for 3D Studio Max is a complete environment in 3DsMAX® to create and export 3D scenes directly into Quest3D (CGR files).

It contains:

  • An exporter that exports directly to Quest3D (generating CGR files).
  • A dedicated material "Quest3D material" with a user interface very similar to Quest3D's object section.

Main features list

Download
  • Current beta version for Max 9: Quest3DExtensions_0.2.18_max9.zip (for Quest3D 3.6.6)

Previous version:

  • Previous beta version for Max 8: Quest3DExtensions_0.2.15_max8.zip (for Quest3D 3.6.3)
  • Previous beta version for Max 9: Quest3DExtensions_0.2.15_max9.zip (for Quest3D 3.6.3)

History

What's new
  • 17.08.2007 Version 0.2.18 with fixed vertex color bug
  • 30.05.2007 Version 0.2.17 rebuilded for Quest3D 3.6.6
  • 09.05.2007 Version 0.2.17 rebuilded for Quest3D 3.6.5
  • 17.04.2007 Version 0.2.17 released.
    • "Some textures are missing" bug fixed
  • 02.04.2007 Version 0.2.16 released.
    • Scale factor added
    • Search textures mechanism (now exporter search textures in the same way like 3D Studio Max)
    • Naming surfaces convention changed ("object_name -> material_name")
  • 02.02.2007 Version 0.2.15 released.
    • Textures coordinates bug fixed
  • 19.01.2007 Version 0.2.14 released.
    • new: Naming surfaces convention changed
    • new: Option change name of root channel added
    • Export empty scene bug fixed
  • 27.11.2006 Version 0.2.13 released.
    • Soothing group bug fixed
    • Exporting map on MAX 9 issue fixed
    • Speed of exporting improved
    • new: Motion channel with correct possition added
    • new: Option "Top channel public" added.
    • new: Reject Alpha, and Ref value parameters added in Quest3D material
    • new: Default Specular color changed to zero in Quest3D material
  • 21.11.2006 Version 0.2.12 released.
    • Textures coordinates bug fixed
  • 17.11.2006 Version 0.2.11 released.
    • Speed of exporting improved
  • 14.11.2006 Version 0.2.10 released.
    • Animation is now supported
  • 07.11.2006 Version 0.2.00 released.
    • Hierarchy export supported
  • 24.10.2006 Version 0.1.13 released.
    • Better mesh optimization
    • Support check box in maps slots
  • 23.10.2006 Version 0.1.12 released.
    • Support Quest 3.5.5 version
    • Conflict with panda exporter fixed
  • 17.10.2006 Version 0.1.11 released.
    • Version for Max 9.0 available
    • Loading dll error fixed
  • 16.10.2006 Version 0.1.10 released.
    • Network texures path supported
    • Crash bug during export mapping channel fixed


Articles/Quest3D Semantics - Quest3D

Articles/Quest3D Semantics

< Articles
Jump to: navigation, search

Contents

  • 1 Quest3D HLSL Semantics
    • 1.1 Semantics overview
    • 1.2 Example
  • 2 See Also

Quest3D HLSL Semantics

Semantics overview

The table below shows a list of non-standard semantics available in Quest3D.

Name | Semantic | Description
float | CHANNELVALUE0 | A value linked to the HLSL channel. The number at the end is the index of the child.
float4 | CHANNELVECTOR0 | A vector linked to the HLSL channel. The number at the end is the index of the child.
Float4x4 | CHANNELMATRIX0 | A matrix linked to the HLSL channel. The number at the end is the index of the child.
texture | COLORMAP0 | A texture linked to the surface channel. The number at the end is the index of the child.
texture | ENVIRONMENTCUBE | The global cube map that was set using the command channel.
float | NLIGHTS | The number of active lights
float[8] | LIGHTPHI | Float array containing the inner angle of the spotlights falloff if the light is a spotlight.
float[8] | LIGHTTHETA | Float array containing the outer angle of the spotlights falloff if the light is a spotlight.
float[8] | LIGHTATT3 | Float array containing the 3rd falloff parameter of the lights(exponential falloff).
float[8] | LIGHTATT2 | Float array containing the 2nd falloff parameter of the lights(linear falloff).
float[8] | LIGHTATT1 | Float array containing the 1st falloff parameter of the lights(constant falloff).
float[8] | LIGHTTYPE | Float array containing the type of each light.
float4[8] | LIGHTPOS | Float array containing the position of each light.
float4[8] | LIGHTCOLOR | Float array containing the color of each light.
float4[8] | LIGHTDIR | Float array containing the direction of each light.
float | FOGFALLOFF1 | The fog falloff parameter1.
float | FOGFALLOFF2 | The fog falloff parameter2.
float | FOGTYPE | The fog falloff type.
float4 | FOGCOLOR | The color of the fog.
bool | ENABLEFOG | A boolean that is True if fog is enabled.
float4x3 | WORLDMATRIXARRAY | An array of matrices containing the matrix for each bone.
bool | UseSkinning | A boolean that is true if the object is skinned.
bool | UseTangent | Define this value somewhere if you want Quest3D to generate tangents for the model.
bool | UseBiNormal | Define this value somewhere if you want Quest3D to generate binormals for the model.
bool | DisableObjectClipping | Define this variable to disable frustrum clipping. You need to do this if your shader does not use a simple WorldViewProjection to calculate the final screen position.

Example

These are all types you get in your shader:

#define MAX_LIGHTCOUNT              8
#define LIGHT_TYPE_NONE             0
#define LIGHT_TYPE_POINT            1
#define LIGHT_TYPE_SPOT             2
#define LIGHT_TYPE_DIRECTIONAL      3

#define FOG_TYPE_LINEAR             0
#define FOG_TYPE_EXP                1
#define FOG_TYPE_EXP2               2

// when this is defined clipping is disabled
float dummy : DisableObjectClipping;

// Quest3D puts this value to true when the
// shader is used on a skinned mesh
bool useSkinning : UseSkinning;

// when this is defined Quest3D generates binormals for the mesh
float dummy2 : UseBiNormal;

// when this is defined Quest3D generates tangents for the mesh
float dummy3 : UseTangent;

// Light parameters
float lightPhi[MAX_LIGHTCOUNT]            : LIGHTPHI;
float lightThetha[MAX_LIGHTCOUNT]         : LIGHTTHETA;
float lightAtt3[MAX_LIGHTCOUNT]           : LIGHTATT3;
float lightAtt2[MAX_LIGHTCOUNT]           : LIGHTATT2;
float lightAtt1[MAX_LIGHTCOUNT]           : LIGHTATT1;
float lightType[MAX_LIGHTCOUNT]           : LIGHTTYPE;
float4 lightPos[MAX_LIGHTCOUNT]           : LIGHTPOS;
float4 lightcolor[MAX_LIGHTCOUNT]         : LIGHTCOLOR;
float4 lightDirection[MAX_LIGHTCOUNT]     : LIGHTDIR;
float lightcount                          : NLIGHTS = 0;

 // Fog parameters
 float fogParam1   : FOGFALLOFF1;
 float fogParam2   : FOGFALLOFF2;
 float fogType     : FOGTYPE;
 float4 fogColor   : FOGCOLOR;
 bool  bEnableFog : ENABLEFOG;

 // local parameters
float fMaterialPower    : CHANNELVALUE0<
   string   UIName            = "Specular Power";
   string   UIWidget          = "Slider";
   float    UIMin             = 1;
   float    UIMax             = 100;

> = 32.f;

float4 vMaterialColor   : CHANNELVECTOR0<

 string   UIName            = "Diffuse color";
 string   UIWidget          = "Color";

> = float4 (192.f/255.f, 128.f/255.f, 96.f/255.f, 1.f);

texture cubeMap   : ENVIRONMENTCUBE;
texture colorMap : COLORMAP0;

See Also

  • HLSLObject

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Tutorials | HLSL | Shaders


Articles/Quest3D Semantics - Quest3D

Articles/Quest3D Semantics

< Articles(Redirected from Quest3D Semantics)
Jump to: navigation, search

Contents

  • 1 Quest3D HLSL Semantics
    • 1.1 Semantics overview
    • 1.2 Example
  • 2 See Also

Quest3D HLSL Semantics

Semantics overview

The table below shows a list of non-standard semantics available in Quest3D.

Name | Semantic | Description
float | CHANNELVALUE0 | A value linked to the HLSL channel. The number at the end is the index of the child.
float4 | CHANNELVECTOR0 | A vector linked to the HLSL channel. The number at the end is the index of the child.
Float4x4 | CHANNELMATRIX0 | A matrix linked to the HLSL channel. The number at the end is the index of the child.
texture | COLORMAP0 | A texture linked to the surface channel. The number at the end is the index of the child.
texture | ENVIRONMENTCUBE | The global cube map that was set using the command channel.
float | NLIGHTS | The number of active lights
float[8] | LIGHTPHI | Float array containing the inner angle of the spotlights falloff if the light is a spotlight.
float[8] | LIGHTTHETA | Float array containing the outer angle of the spotlights falloff if the light is a spotlight.
float[8] | LIGHTATT3 | Float array containing the 3rd falloff parameter of the lights(exponential falloff).
float[8] | LIGHTATT2 | Float array containing the 2nd falloff parameter of the lights(linear falloff).
float[8] | LIGHTATT1 | Float array containing the 1st falloff parameter of the lights(constant falloff).
float[8] | LIGHTTYPE | Float array containing the type of each light.
float4[8] | LIGHTPOS | Float array containing the position of each light.
float4[8] | LIGHTCOLOR | Float array containing the color of each light.
float4[8] | LIGHTDIR | Float array containing the direction of each light.
float | FOGFALLOFF1 | The fog falloff parameter1.
float | FOGFALLOFF2 | The fog falloff parameter2.
float | FOGTYPE | The fog falloff type.
float4 | FOGCOLOR | The color of the fog.
bool | ENABLEFOG | A boolean that is True if fog is enabled.
float4x3 | WORLDMATRIXARRAY | An array of matrices containing the matrix for each bone.
bool | UseSkinning | A boolean that is true if the object is skinned.
bool | UseTangent | Define this value somewhere if you want Quest3D to generate tangents for the model.
bool | UseBiNormal | Define this value somewhere if you want Quest3D to generate binormals for the model.
bool | DisableObjectClipping | Define this variable to disable frustrum clipping. You need to do this if your shader does not use a simple WorldViewProjection to calculate the final screen position.

Example

These are all types you get in your shader:

#define MAX_LIGHTCOUNT              8
#define LIGHT_TYPE_NONE             0
#define LIGHT_TYPE_POINT            1
#define LIGHT_TYPE_SPOT             2
#define LIGHT_TYPE_DIRECTIONAL      3

#define FOG_TYPE_LINEAR             0
#define FOG_TYPE_EXP                1
#define FOG_TYPE_EXP2               2

// when this is defined clipping is disabled
float dummy : DisableObjectClipping;

// Quest3D puts this value to true when the
// shader is used on a skinned mesh
bool useSkinning : UseSkinning;

// when this is defined Quest3D generates binormals for the mesh
float dummy2 : UseBiNormal;

// when this is defined Quest3D generates tangents for the mesh
float dummy3 : UseTangent;

// Light parameters
float lightPhi[MAX_LIGHTCOUNT]            : LIGHTPHI;
float lightThetha[MAX_LIGHTCOUNT]         : LIGHTTHETA;
float lightAtt3[MAX_LIGHTCOUNT]           : LIGHTATT3;
float lightAtt2[MAX_LIGHTCOUNT]           : LIGHTATT2;
float lightAtt1[MAX_LIGHTCOUNT]           : LIGHTATT1;
float lightType[MAX_LIGHTCOUNT]           : LIGHTTYPE;
float4 lightPos[MAX_LIGHTCOUNT]           : LIGHTPOS;
float4 lightcolor[MAX_LIGHTCOUNT]         : LIGHTCOLOR;
float4 lightDirection[MAX_LIGHTCOUNT]     : LIGHTDIR;
float lightcount                          : NLIGHTS = 0;

 // Fog parameters
 float fogParam1   : FOGFALLOFF1;
 float fogParam2   : FOGFALLOFF2;
 float fogType     : FOGTYPE;
 float4 fogColor   : FOGCOLOR;
 bool  bEnableFog : ENABLEFOG;

 // local parameters
float fMaterialPower    : CHANNELVALUE0<
   string   UIName            = "Specular Power";
   string   UIWidget          = "Slider";
   float    UIMin             = 1;
   float    UIMax             = 100;

> = 32.f;

float4 vMaterialColor   : CHANNELVECTOR0<

 string   UIName            = "Diffuse color";
 string   UIWidget          = "Color";

> = float4 (192.f/255.f, 128.f/255.f, 96.f/255.f, 1.f);

texture cubeMap   : ENVIRONMENTCUBE;
texture colorMap : COLORMAP0;

See Also

  • HLSLObject

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Tutorials | HLSL | Shaders


Quest3D:About - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Quest3D:About

From Quest3D

Jump to: navigation, search

This wiki was created for and by Quest3D to improve the quality and availability of the Quest3D documentation.


Quest3D:General disclaimer - Quest3D

Quest3D:General disclaimer

There is currently no text in this page, you can search for this page title in other pages or edit this page.


Quest3D:Privacy policy - Quest3D

Quest3D:Privacy policy

There is currently no text in this page, you can search for this page title in other pages or edit this page.


SDK/Quick Start - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Quick Start

From Quest3D

< SDK
Jump to: navigation, search

Contents

  • 1 Introduction
  • 2 QuickStart
    • 2.1 Include and library files
    • 2.2 New Project
    • 2.3 New Quest3D Channel
    • 2.4 Ready to compile
    • 2.5 Sample Project

Introduction

Quest3D is a comprehensive tool. For most projects, the 'Channeling' principle of Quest3D will allow you to create the application logic. For some purposes, like dynamic loading/unloading of ChannelGroups, LUA Scripting is a good solution. However, sometimes you need to control special hardware, or want to use 3rd party algorithm libraries. The Quest3D SDK allows you to build your own channels in the C++ programming language. Microsoft Visual Studio 2003 and 2005 are supported. A simple wizard will guide you to the creation process of your own channels. The following section will explain how to install the SDK and build a simple Channel.

QuickStart

After installing the SDK you will be able to write your own channels in Microsoft Visual Studio. This section will show how create a Quest3D channel project.

Include and library files

Be sure that the Quest3D SDK include and library path are put in the Visual Studio environmental variables:

  • In the "Tools" menu select the "Options" menu entry
  • In the "Options'"window that appears, select "Projects" and then "VC++ Directories" in the left tree
  • Select "Include files" from the right drop down menu
  • Double-click on an empty line to add a new line
  • Select the "include" folder in the Quest3D SDK installation folder

Visual C++ is now able to find the header files. This SDK also uses a number of library files. These can also be added in the same window:

  • Select "Library files" from the right drop down menu
  • Double-click on an empty line to add a new one
  • Select the "lib" folder in the Quest3D SDK installation folder
  • Click the "OK" button to close this options window

New Project

  • From the "File" menu select "New..."
  • Select Project'"
  • Select "Visual C++ Projects" in the "Project Types" tree.
  • Select "Quest3D Channel"
  • Enter project name, location and a solution name

New Quest3D Channel

  • If you prefer choose a different base class from the "Base Class" combobox.
  • Type the Channel C++ class name in the "Class Name" editbox
  • Type a human friendly name for the channel in the "Human readable" edit box
  • If you don't want an interface for your channel, switch off the Create property page checkbox. If you only want to create an interface and not a channel, you can uncheck the 'Create Channel' option.
  • If you need to invoke .NET libraries using Managed C++, switch on the '.NET Compatibility' option.
  • Now Press the "OK" button

The Quest3D Wizard will now create a new Channel Project.

Ready to compile

The Channel Wizard created a solution with the Channel and, if you chose to do so, the channel interface. Your channel is now ready to compile.

Sample Project

MyChannel sample project

Back to Main Index


SDK/Quick Start - Quest3D

SDK/Quick Start

< SDK(Redirected from QuickStart)
Jump to: navigation, search

Contents

  • 1 Introduction
  • 2 QuickStart
    • 2.1 Include and library files
    • 2.2 New Project
    • 2.3 New Quest3D Channel
    • 2.4 Ready to compile
    • 2.5 Sample Project

Introduction

Quest3D is a comprehensive tool. For most projects, the 'Channeling' principle of Quest3D will allow you to create the application logic. For some purposes, like dynamic loading/unloading of ChannelGroups, LUA Scripting is a good solution. However, sometimes you need to control special hardware, or want to use 3rd party algorithm libraries. The Quest3D SDK allows you to build your own channels in the C++ programming language. Microsoft Visual Studio 2003 and 2005 are supported. A simple wizard will guide you to the creation process of your own channels. The following section will explain how to install the SDK and build a simple Channel.

QuickStart

After installing the SDK you will be able to write your own channels in Microsoft Visual Studio. This section will show how create a Quest3D channel project.

Include and library files

Be sure that the Quest3D SDK include and library path are put in the Visual Studio environmental variables:

  • In the "Tools" menu select the "Options" menu entry
  • In the "Options'"window that appears, select "Projects" and then "VC++ Directories" in the left tree
  • Select "Include files" from the right drop down menu
  • Double-click on an empty line to add a new line
  • Select the "include" folder in the Quest3D SDK installation folder

Visual C++ is now able to find the header files. This SDK also uses a number of library files. These can also be added in the same window:

  • Select "Library files" from the right drop down menu
  • Double-click on an empty line to add a new one
  • Select the "lib" folder in the Quest3D SDK installation folder
  • Click the "OK" button to close this options window

New Project

  • From the "File" menu select "New..."
  • Select Project'"
  • Select "Visual C++ Projects" in the "Project Types" tree.
  • Select "Quest3D Channel"
  • Enter project name, location and a solution name

New Quest3D Channel

  • If you prefer choose a different base class from the "Base Class" combobox.
  • Type the Channel C++ class name in the "Class Name" editbox
  • Type a human friendly name for the channel in the "Human readable" edit box
  • If you don't want an interface for your channel, switch off the Create property page checkbox. If you only want to create an interface and not a channel, you can uncheck the 'Create Channel' option.
  • If you need to invoke .NET libraries using Managed C++, switch on the '.NET Compatibility' option.
  • Now Press the "OK" button

The Quest3D Wizard will now create a new Channel Project.

Ready to compile

The Channel Wizard created a solution with the Channel and, if you chose to do so, the channel interface. Your channel is now ready to compile.

Sample Project

MyChannel sample project

Back to Main Index


Reference Manual - Quest3D

Reference Manual

Reference Manual

Getting Started

  • Introduction and overview
  • Installation
  • Importing
  • Basics
  • Publishing Quest3D Projects

Tutorials and articles

  • Tutorials
  • Video Tutorials
  • Various Articles

Reference

  • Channels
  • Editor

Customization

  • Editor lay-out
  • Hot keys
  • Preferences
  • Tool bars

Help on Help

  • Online help
  • Using help

Categories: Tutorials | Reference Manual


Remove Group - Quest3D

Remove Group

Contents

  • 1 Remove Group
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

Remove Group

General

Remove a group from an array in a pool

Children

  1. Group Instance - Value
    • Number in pool (array) to delete
  2. Group Pool Name - Text
    • Pool name to delete from

Description

With this channel you can remove a loaded channelgroup from a pool. When there multiple channelgroups in the pool then you can remove one or more channelgroups from the array.

This channel is part of the dynamic loading system of Quest3D.

CallChannel

When called this channel will attempt to remove a group from the given pool.

Remarks

With the ForLoop channel you can delete an entire array of channelgroups.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


RemoveChannelFromEvent - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

RemoveChannelFromEvent

From Quest3D

Jump to: navigation, search

Function definition

void RemoveChannelFromEvent( A3d_Channel* channel, int eventNr );

Description

Remove a channel from the event system.

Parameters

Name | Description
channel | Channel to remove
eventNr | Event to remove

Remarks

This will remove the channel from the core engine event system. This function should always be called when the AddChannelToEvent is used. You are able to use this function in the destructor of a channel.

The overloaded DoEvent function will not be called anymore by the core engine.

For a list of possible values for the eventNr parameter, please see AddChannelToEvent

Related Documentation

AddChannelToEvent, DoEvent

One Level Up - EngineInterface

Back to Main Index


RemoveChild - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

RemoveChild

From Quest3D

Jump to: navigation, search

Function definition

void RemoveChild(int childNr);

Description

Remove the link to a channel

Parameters

Name | Description
childNr | The number of the link to delete.

Remarks

Normally this function is used by the core engine to remove links from a channel to one of its children. You will not need this function in normal channel programming. You are also not able to overload it. =Related Documentation==

SetChild

One Level Up - A3d Channel

Back to Main Index


RemoveChildren - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

RemoveChildren

From Quest3D

Jump to: navigation, search

Function definition

void RemoveChildren();

Description

Remove all links to other channels from this channel

Parameters

Name | Description
channelType | The GUID of the channel type that should be counted

Remarks

Normally this function is used by the core engine to remove links from a channel to one of its children. You will not need this function in normal channel programming. You are also not able to overload it.

Related Documentation

RemoveChild, SetChild

One Level Up - A3d Channel

Back to Main Index


RenderTexture - Quest3D

RenderTexture

Contents

  • 1 RenderTexture
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Properties
      • 1.4.1 Desired Width
      • 1.4.2 Desired Height
      • 1.4.3 Channel render each frame
      • 1.4.4 Use exact backbuffer
      • 1.4.5 HDR target
      • 1.4.6 Clearscreen
      • 1.4.7 Use backbuffer rendering
      • 1.4.8 Use ARGB instead of XRGB
    • 1.5 CallChannel
    • 1.6 Remarks

RenderTexture

General

Render a 3d scene into this texture channel.

Children

  1. Call childs - All Types Channel
    • Attach a full 3d scene as a child that renders in a texture instead of to the screen.

Description

With this channel you are able to render a scene in a texture instead of to your screen. This texture can then be used as a texture in your normal scene. To do this correctly attach a full scene as a child. You are able to use the ClearScreen channel to, but do not use the Command channel for "Begin Scene" and "End Scene", and also do not use the Present. Call this channel before you render your main scene. In your main scene you can then use this channel as a texture on any object.

In the properties dialog of this channel you are able to change the width and the height. Setting the height or with to -1 will use the default width and height settings of 128x128 pixels.

Properties

Desired Width

Control the Width of the rendered texture, -1 is default and use current screen resolution. You can use any other resolution like for example 256 or 512.

Desired Height

Control the Height of the rendered texture, -1 is default and use current screen resolution. You can use any other resolution like for example 256 or 512.

Channel render each frame

With this option selection the texture will be rendered every frame.

Use exact backbuffer

With this option selected the channel will use the exact backbuffer.

HDR target

Clearscreen

If you select this option, the RenderTexture channel will handle the clear screen itself.

Use backbuffer rendering

Use ARGB instead of XRGB

CallChannel

Calling this channel will start the rendering of the texture with the scene attached as a child.

Remarks

Make sure you call this channel before rendering your scene where you use this texture in.

The dialog that belongs to this channel only the width and height of the texture is information used by RenderTexture channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing


RenderToCubeMap - Quest3D

RenderToCubeMap

Contents

  • 1 RenderToCubeMap
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

RenderToCubeMap

General

Render a 3d scene into this cube texture channel.

Children

  1. Cube render position - Value Vector
    • The position where the cubemap is rendered
  2. Scene to render in cubemap - All Types Channel
    • Attach a full 3d scene as a child that renders in a texture instead of to the screen.

Description

With this channel you are able to render a scene in a cube texture instead of to your screen. This texture can then be used as a texture in your normal scene. To do this correctly attach a full scene as a child. You are able to use the ClearScreen channel to, but do not use the Command channel for "Begin Scene" and "End Scene", and also do not use the Present. Call this channel before you render your main scene. In your main scene you can then use this channel as a texture on any object.

In the properties dialog of this channel you are able to change the width and the height. Setting the height or with to -1 will use the default width and height settings of 128x128 pixels.

In the Properties dialog you can also set the Far and Near clipping planes.

A cubemap has 6 sides. Each time you call this channel one of the sides is rendered. If you want to render more then 1/6th of the cubemap in one frame call this channel multiple times in one frame. Calling 2 or 3 times is often good enough. Remember that your scene that you render in the cubemap each time can have a big performance penalty. Make sure the scene you render is also rendered if you call it a second time!

CallChannel

Calling this channel will start the rendering of the texture with the scene attached as a child.

Remarks

Make sure you call this channel before rendering your scene where you use this texture in.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Texturing


ResourceManager - Quest3D

ResourceManager

Contents

  • 1 Resource Manager
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Example

Resource Manager

General

This channel gives you the oppertunity to skip the creation of the resource folder in a Quest3D project.

Children

none

Description

If you are using a Material inserted through the Materials Window Quest3D originaly tries to manage these resources. The materials used will be shared between objects so that you reserve resources.

If you used a Material and you saved your project Quest3D would create a resource folder in your project folder besides your startgroup. This resource folder would be full with the unique ids of the materials you used on your objects. If you wanted to run this project on another computer you had to copy the resource folder as well or the materials would not be found.

Since this requirement is something you might do wrong or forget the Resource Manager is invented. The resource manager is a channel you drag into the startgroup of your project. Make sure you only create 1 of these channels!! The result will be that the whole resource folder will not be created but saved inside this channel instead.

The resource manager is the start of a more global resource system to also store other items in the future.

CallChannel

You do not need to call this channel, you only need to place this channel in the start channel group.

Example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


Rope - Quest3D

Rope

Contents

  • 1 Rope
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Normal length of springs
      • 1.3.2 Rope particle count
      • 1.3.3 Particle weight
      • 1.3.4 Air friction
      • 1.3.5 Rope inner friction
      • 1.3.6 Ground height
      • 1.3.7 Rope spring constant
      • 1.3.8 Ground friction
      • 1.3.9 Ground repel
      • 1.3.10 Ground absorption
      • 1.3.11 Target follow force
      • 1.3.12 Calculate forces when receiving network data
      • 1.3.13 State
      • 1.3.14 Rotate parts for chain
      • 1.3.15 Recreate
    • 1.4 CallChannel

Rope

General

This channel is able to simulate spring physics based rope

Children

  1. Collision objects - CollisionObject
    • Collision object on which the rope will have collision
  2. Repel constant - Value
    • Once collision is detected general multiplier of force to repel from collision vector
  3. Repel distance - Value
    • Please link an envelope channel that determines force to repel at which distance of the object. On the horizontal axis it should be 0 - 1 where 1 is total collision.
  4. Source ObjectData - 3D ObjectData
    • Ropeobject data to render at each spring this is generally a link of a chain or a small piece of rope
  5. Rope particle positions - Value Vector
    • These vectors are used to set the position of one of the particles of the rope
  6. Rope particle positions Nr - Value
    • These values are used to determine which particles the vectors of the Rope particle positions control

Description

The rope channel can be used to simulate rope with spring like behaviour. 100 rope parts is not uncommon to use which makes this channel beter suited for rope then ODE Body. The rope channel can be synchronized over the network.

Each point between a spring we call a particle. Particles can be controlled by the application or calculated by the rope.

A ground is used under which the rope particles will never go. If the ground is unwanted just position it really low.

The first collision object that is linked to the rope will behave as if it is a ground. This means it will never go under the object and will have the same force damping and sliding as the ground has.

When the rope has no controlling vectors linked it is controllable with the arrow keys.

In the dialog you can see the following options:

Normal length of springs

This option determines the base length of each of the rope springs. In general these values are small like 0.1

Rope particle count

This option determines the number of springs this rope will have. Changing this value will make the rope much lighter or heavier which will need tweaking of the other values.

Particle weight

Each particle will have this weight. Total weight of the rope changes if the rope becomes longer. This might produce too much stretch on the rope if the rope becomes to heavy.

Air friction

Amount of air friction that will dampen the rope.

Rope inner friction

Rope inner friction constant.

Ground height

The ground height simulates in invisible ground below the rope will never go. This height can be dynamically changed in the rope action channel.

Rope spring constant

The spring constant is the strength of the springs. A stiffer rope will result with a higher constant and the springs will want to stretch less. 80000 is around the maximum before the rope becomes unstable with 100 springs.

Ground friction

When a particle hits the ground the amount of friction the ground will give. This also applies to the first collision object linked to the channel!

Ground repel

When a particle hits the ground the amount of repel the ground will push the particle back up. This also applies to the first collision object linked to the channel!

Ground absorption

When a particle hits the ground the amount of repel the ground will push the particle back up. This also applies to the first collision object linked to the channel!

Target follow force

When a particle is controller by the application this force will be the amount in which the particle will go towards the desired position. This is done to keep the rope stable. Giving a very high value will result in an unstable rope. Try to keep this value as low as is still acceptable. When using a buffer to position the rope this value will also be used.

Calculate forces when receiving network data

When a buffer is set as the target rope positions you can still calculate the original forces on the model or only move towards the buffer positions.

State

The states of the rope make it possible to position the rope how desired save the state and on loading of the rope start again in this position. Snapshots can also be made at the moment of saving which is not recommended since the rope might be in an unwanted state.

Rotate parts for chain

This option can be used to rotate each following part of the rope with 90 degrees simulating a chain when only one straight chain is connected as object to render.

Recreate

This option will recreate the rope in its original position.

CallChannel

This will draw and calculate the rope. Generally using a surface is a better method.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Rope Action - Quest3D

Rope Action

Contents

  • 1 Rope Action
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Lock closest particle
      • 1.3.2 Unlock closest particles
      • 1.3.3 Set ground height
      • 1.3.4 Info from rope into buffer
      • 1.3.5 On buffer change info into rope
    • 1.4 CallChannel

Rope Action

General

The rope action channel can perform specific actions on a Rope

Children

  1. Different types - All Types Channel
    • Depends on the setting which channels are needed

Description

Lock closest particle

To make sure a particle does not change from this position you can connect the rope channel and a vector to which the particle that is the closest will stop moving. Generally using vectors on know particles is a better method of controlling particles.

Unlock closest particles

Will unlock each locked particle. Connect the rope channel

Set ground height

This option needs the rope channel and a value to dynamically set the ground height.

Info from rope into buffer

To synchronize the rope over a network this option is used to set the rope data into a buffer. A buffer channel and the rope channel must be connected for this option.

On buffer change info into rope

Connect a buffer (for example a Network Buffer) of which this action will set the data into the rope channel when the buffer changes its data. You need to keep calling this action for this to work!

CallChannel

Calling the channel will do the setting that is used in the rope action.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


Rope Vector - Quest3D

Rope Vector

Contents

  • 1 Rope Vector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Get particle position
      • 1.3.2 Get particle position
    • 1.4 CallChannel

Rope Vector

General

The rope vector channel can ask data from a Rope

Children

  1. Rope - Rope
    • Rope to get the information from
  2. Different types - All Types Channel
    • Depends on the setting which channels are needed

Description

Get particle position

Link the rope and a value to get the position of the particle nr that is set in the value. This value should be between 0 and the number of springs in the rope.

Get particle position

Link the rope and a value to get the forceof the particle nr that is set in the value. This value should be between 0 and the number of springs in the rope.

CallChannel

Calling this channel has no effect.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings


RSS Feed - Quest3D

RSS Feed

Contents

  • 1 RSS Feed
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

RSS Feed

General

This channels set the address (URL) to get the RSS Feed info from

Children

  1. URL - Text
    • URL that the RSS Item will use

Description

With this channel you are able to set the address where the RSS Item channel can retrieve the RSS items.

CallChannel

When this channel is called it will set the URL to retrieve the RSS items. And it will show the number of RSS feed items available.

Remarks

You only need to call this channel once to set the URL. You can use multiple instance of this channel to set multiple RSS Feed URL’s

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings | New in version 3.5


RSS Feed Info - Quest3D

RSS Feed Info

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Incomplete


RSS Item - Quest3D

RSS Item

Contents

  • 1 RSS Item
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Return the title of the item
      • 1.3.2 Return the link to the item
      • 1.3.3 Return the date the item was posted
      • 1.3.4 Return the author of the item
      • 1.3.5 Return the categories the item belongs to
      • 1.3.6 Return the description of the item
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Example

RSS Item

General

This displays the RSS Text item retrieved via the RSS Feed URL

Children

  1. RSS Feed - RSS Feed
    • RSS Feed URL address to retrieve RSS items form
  2. Item Identifier - Value
    • This identifier value controls what item will be shown

Description

This channel will display the RSS feed info as a Text based on the RSS feed URL, the value of the item Identifier and the return selection made in the channel dialog.

Return the title of the item

This will return the title of the selected Item Identifier.

Return the link to the item

This will return the (http) address of the selected Item Identifier. To pass trough the link to the OpenURL channel you need to link a TextOperator set to Text Replicate

Return the date the item was posted

This will return the date when the item was posted of the selected Item Identifier.

Return the author of the item

This will return the name of the author of the selected Item Identifier.

Return the categories the item belongs to

This will return the name of the category of the selected Item Identifier.

Return the description of the item

This will return the description of the selected Item Identifier.

CallChannel

When this channel is called it will return the selected information from the selected RSS feed.

Remarks

You only need to call this channel once to retrieve the information. However calling this channel every frame will make sure you have the latest RSS feed info retrieved.

Example

Media:rss feet.zip

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


SaveBlockSize - Quest3D

SaveBlockSize

Function definition

BOOL SaveBlockSize(DWORD size);

Description

Save the size of the data that is about to follow with SaveDataToFile.

Parameters

Name | Description
size | Size of the data that is about to be saved with the SaveDataToFile function.

Return value

Returns true if successful, otherwise false.

Remarks

The SaveDataToFile must be used after this function or else loading will fail. The size parameter of the SaveDataToFile function must hold the same DWORD as given here in size.

Related Documentation

SaveDataToFile, SaveTag, Loading and Saving

One Level Up - A3dFileSaver

Back to Main Index


SaveBufferInCache - Quest3D

SaveBufferInCache

Contents

  • 1 SaveBufferInCache
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

SaveBufferInCache

General

Saves buffer to a file in the cache

Children

  1. Filename - Text
    • Single file name of the file to save.
  2. Cache dir name - Text
    • The sub dir in the cache dir to save the file in.
  3. Buffer to load - Buffer
    • Buffer to save

Description

This channel can save a file into the cache directory. This channel is perfect to save data from an internet application. For safety reasons you cannot specify a path. Only a folder name and a file name are supported.

To load a file into the cache see: LoadBufferFromCache

CallChannel

Saves the buffer.

Applications

Load and save data in an internet application or an executable.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


SaveChannel - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SaveChannel

From Quest3D

Jump to: navigation, search

Function definition

bool SaveChannel(A3dFileSaver& saver);

Description

This function is called by Quest3D when a channel group is saved. This function is executed for every channel individually in an order that is determined by Quest3D. This function should be overloaded when a channel must be able to save data.

Parameters

Name | Description
saver | An address of a A3dFileSaver class that is passed to every channel that should save data. This class holds a buffer and a number of functions that can be used to save data into the file that is saved. This class is actually an interface to a FileSaver channel.

Return value

Return false when the save routing failed (this will stop saving), return true if successful

Remarks

When this function is overloaded, the base class SaveChannel function should also be called (see line 2 and 3 of the example). If this is not done, the loading of data might fail because not all data was saved.

Example

bool Aco_Example1::SaveChannel(A3dFileSaver& saver) {
    // First call our base class save routine
    if(!A3d_Channel::SaveChannel(saver))
        return false;

    // Save the ourFloat_ protected float variable
    saver.SaveTag("EXPF");
    saver.SaveBlockSize(sizeof(float));
    saver.SaveDataToFile(&ourFloat_, sizeof(float));

    return true;
}

In the above example a tag is saved, the size of the data and the actual data. In the LoadChannel example you are able to see how this data is correctly loaded back into the variable.

Related Documentation

LoadChannel, FileSaver Channel, Loading and Saving

One Level Up - A3d Channel

Back to Main Index


SaveChannelGroupToFile - Quest3D

SaveChannelGroupToFile

Contents

  • 1 SaveChannelGroupToFile
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

SaveChannelGroupToFile

General

Save the linked channel group to a file

Children

  1. Filepath - Text
    • Path to save the channel group to.
  2. Public call channel which group to save. - All Types Channel

Description

This channel will allow you to save the channel group the linked public call channel to a file.

The first child determines the target filename

The second child should be a public call channel. The channel group the public call channel points to will be saved.

CallChannel

Will save the channel group to file

Remarks

This channel can't be used when publishing to a web site. This channel is not part of the viewers package!

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


SaveChannelToBuffer - Quest3D

SaveChannelToBuffer

Contents

  • 1 SaveChannelToBuffer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

SaveChannelToBuffer

General

Copy saved channel data into a buffer

Children

  1. Channel - All Types Channel
    • Channel to retrieve data from
  2. Buffer - Buffer
    • Target for the retrieved data

Description

This channel will allow you to copy a channels saved data into a buffer. This buffer can then be used to store that data.

Most channels save some data that is needed to configure or set it to a certain value. This data can be something like a texture, 3D object or just a text.

When the channel is called the data of the channel that is linked on the first child link position will be saved into the linked Buffer child (on the second child link position).

A Buffer channel can be used with database to store data.

CallChannel

Store the data in the channel into the buffer

Remarks

This data is saved in a special format that can only be read by the same channel.

Also take a look at the LoadBufferIntoChannel channel documentation. This is the counter part of this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


SaveDataToFile - Quest3D

SaveDataToFile

Function definition

BOOL SaveDataToFile(void* data, DWORD size);

Description

Save (binary) data to opened file.

Parameters

Name | Description
data | Pointer to the data that should be saved.
size | Number of bytes that are retrieved from the pointer.

Return value

Returns true if the data was successfully added to the file save buffer.

Related Documentation

SaveBlockSize, SaveTag, Loading and Saving

One Level Up - A3dFileSaver

Back to Main Index


SaveRenderBuffer - Quest3D

SaveRenderBuffer

Contents

  • 1 SaveRenderBuffer
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

SaveRenderBuffer

General

Will save the current rendered scene to a file on disk

Children

  1. Bitmap number - Value
    • Bitmap number used for the filename
  2. Save File Name - Text
    • Filename to use for the bitmap
  3. Save File in Buffer - Buffer
    • Save in Buffer instead of a file
  4. File Type - Value
    • Define the Image Type: 0-bmp,1-jpg,2-tga,3-png,4-dds,5-hdr

Description

You can use this channel to save the project you are currently creating to disk. This channel is able to create a numbered set of bitmap files on disk that can later be used to create a AVI or MPEG movie.

The first channel is the bitmap number and the second actual filename (including path) of the filename. You will not need to add the file extension, the channel will add this automatically. For example: "C:\Grab\Frame" is enough.

Use the SetTimeBase channel to grab frames with a fixed time base. With this channel it is possible to create a frame grabber that will grab 25 frames per second.

CallChannel

Will use the children to create a bitmap file with the current rendered frame.

Remarks

Saving a bitmap to disk will take a second.

Applications

Create a AVI or MPEG movie of your production

Tips

Keep increasing the value of the first child every time you've called this channel to get a complete set of bitmaps with correct frame numbers.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | System


SaveTag - Quest3D

SaveTag

Function definition

void SaveTag(char * tag);

Description

Save a four character tag to the file.

Parameters

Name | Description
tag | Pointer to a 4 character string. Make sure this pointer always points to a string with at least 4 characters.

Return value

Returns true if the tag is correctly formatted and successfully added to the file save buffer.

Remarks

The same tag should never be used twice, especially in the same SaveChannel function of a channel if the channel should remain backwards compatible.

Related Documentation

SaveBlockSize, SaveDataToFile, Loading and Saving

One Level Up - A3dFileSaver

Back to Main Index


SceneImporter - Quest3D

SceneImporter

Contents

  • 1 Scene Importer
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Hierarchy import
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Remarks

Scene Importer

Children

  1. File path - Text
    • The filename of the DAE(COLLADA) file.
  2. Pool name - Text
    • The name of the pool for the result.
  3. Index in pool - Value
    • The index in the pool for the result.
  4. Flatten hierarchy- Value
    • See description below
  5. Scale factor - Value
    • Allows scaling of the imported scene
  6. OUT: Imported objects - Text
    • Names of the imported objects
  7. OUT: Imported object - Text
    • Names of the imported lights
  8. OUT: Imported object - Text
    • Names of the imported cameras
  9. OUT: Result value - Value
    • The result of the import. 0 Fail. 1 Success

Description

This channel allows you to import a COLLADA file into a cgr. It allows you to import models during run time.

Hierarchy import

There are 4 different modes for importing the hierarchy of the COLLADA file:

  • 0 - Flatten hierarchy
  • 1 - Import as separated object list
  • 2 - Import as separated object list with Instancing (based on nature painting)
  • 3 - Import with hierarchy and animation

CallChannel

Call this channel once to import the model and load the result into the specified pool at the specified index.

Applications

Load COLLADA files into Quest3D.

Remarks

The importer imports skinning, light, models and cameras.

Categories: Channels | New in version 4.0


Selector - Quest3D

Selector

Contents

  • 1 Selector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Selector

General

Set itself to the position of the child that is true (one).

Children

  1. Selection Values - Value
    • Number of channels that return a true (1) value

Description

Use this channel to return the number of the link of the child that is true (value of 1). When three children are linked, and the third is set to 1 (one), the selector value is set to 2 (it will start at zero). If none of the children is true this channel wil set its value to -1.

CallChannel

Has no effect

Applications

Easy for switching when a certain key is pressed (using the UserInput channel)

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


Serial Command - Quest3D

Serial Command

Contents

  • 1 Serial Command
    • 1.1 Children
    • 1.2 Description
      • 1.2.1 Open Com Port
      • 1.2.2 Close Com Port
      • 1.2.3 Clear Buffer
      • 1.2.4 Send Data Package
      • 1.2.5 Next Data Package
      • 1.2.6 Send Text to Port
      • 1.2.7 Send Formatted Text to Port
      • 1.2.8 Add Byte to Package
      • 1.2.9 Add Bits to Package
      • 1.2.10 Add formatted text to Package
      • 1.2.11 Clear Package
      • 1.2.12 Get Information from Buffer
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Tips
  • 2 Examples

Serial Command

Children

  1. Different Types - All Types Channel
    • The children that need to be linked depends on the settings of this channel

Description

This channel can be used to send commands to a certain serial communication port. One of the following commands can be selected in the properties window:

Open Com Port

Will open the serial communication port of the Serial Port child linked.

Close Com Port

Will close the serial communication port of the Serial Port child linked.

Clear Buffer

Clears the buffers of a communication port. Needs a Serial Port child linked.

Send Data Package

Send the linked Serial Data Package over the linked Serial Port.

Next Data Package

The linked Serial Data Package should retrieve the next data package. The Serial Port should be linked to the Serial Port.

Send Text to Port

Send the linked Text over the linked Serial Port.

Send Formatted Text to Port

Send the linked Text over the linked Serial Port. You can use the following escape characters in the text that will be converted to actual escape characters: \a, \b, \f, \n, \r, \t, \v. You can also send a ASCII value by using \xxx where xxx is a number between zero and 255.

Add Byte to Package

Add a byte to a Serial Data Package. You can give the ASCII value of the byte in a linked Value.

Add Bits to Package

Add bits to a Serial Data Package. You can linked a number of Value channel, each with a 0 or 1 value set. They will be combined and a byte will be generated and placed into the data package. Useful for sending flags to a serial communication port.

Add Text to Package - Add the linked Text to a Serial Data Package.

Add formatted text to Package

Same as above, but now you can add it to a Serial Data Package in stead of sending it to the port directly.

Clear Package

Clear the linked Serial Data Package so it can be filled again by a channel or by received data.

Get Information from Buffer

Direct access to the serial buffer. Use 'Serial Info - Channel input buffer lenght' to get the lenght of the buffer. Children. 1.In: Serial Port 2.In: Current Iteration 3. Out: value at current iteration

CallChannel

The selected command will be executed.

Applications

Perform all sorts of operations on a COM port, like clearing the buffer, closing or opening the COM port, sending text or packages, etc...

Tips

When the channel is called, the selected command will be executed. Please note that some of the command need children linked before they can be executed.

Examples

Serial example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Serial Data Package - Quest3D

Serial Data Package

Contents

  • 1 Serial Data Package
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 Examples

Serial Data Package

General

Store data for sending or receiving over a serial communication port

Children

  1. Communication port to retrieve information from - Serial Port
    • This child is used when the data package is used to receive data

Description

This channel can be used to retrieve or send data from or over a serial communication port. The data package format can be changed in the properties dialog.

With the minimum size you can select the minimum number of bytes that must be received from the serial port before the package is valid.

You can set the package separator, so the channel can detect where the package should start. You can also select the end package separator string, or select the fixed length size of the package.

CallChannel

Will have no effect

Applications

The data package can be used to processes received information from a serial communication port, or combine data to be sent. The package can support variable and fixed length packages and binary and ASCII data.

Examples

Serial example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Serial Info Value - Quest3D

Serial Info Value

Contents

  • 1 Serial Info Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Port Open
      • 1.3.2 CTS Status
      • 1.3.3 DSR Status
      • 1.3.4 DCD Status
      • 1.3.5 RI Status
      • 1.3.6 Port Input buffer length
      • 1.3.7 Port Output buffer length
      • 1.3.8 Baud Rate Setting
      • 1.3.9 Channel Input Buffer Length
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 Examples

Serial Info Value

General

Retrieve status information from serial communication ports and sessions

Children

  1. Serial Communication Port - Serial Port
    • Serial Communication Port to retrieve data from

Description

With this channel you are able to retrieve the status of the communication port. The following information can be retrieved from the linked Serial Port channel:

Port Open

Return 1 (one) if the port is opened, and 0 (zero) if not

CTS Status

Returns 1 (one) if the CTS status bit of the port is high and 0 (zero) if not

DSR Status

Returns 1 (one) if the DSR status bit of the port is high and 0 (zero) if not

DCD Status

Returns 1 (one) if the DCD status bit of the port is high and 0 (zero) if not

RI Status

Returns 1 (one) if the RI status bit of the port is high and 0 (zero) if not

Port Input buffer length

Returns the number of bytes in the input buffer

Port Output buffer length

Returns the number of bytes in the output buffer

Baud Rate Setting

Returns the selected port baud rate setting

Channel Input Buffer Length

Returns the number of bytes waiting for retrieval

Each time this channel is used as a Value channel, the information is retrieved. The channel can't be called.

CallChannel

Does not have effect, use the channel as a Value channel to retrieve information.

Applications

  • Trigger an action when a certain amount of data has been received.
  • Check if the com port is actually opened
  • Check if the com port is still ready for sending or receiving

Examples

Serial example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Serial Port - Quest3D

Serial Port

Contents

  • 1 Serial Port
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 Examples

Serial Port

General

Select and configure a serial communication port for receiving and transmitting data

Children

  1. Port Number - Value
    • Port number to open (optional)
  2. Plugin Channel
    • A plugin to process the incoming and outgoing data can be used, see SDK for more details (optional)

Description

This channel is needed to open a serial communication (COM) port. The port must be open before data can be received and transmitted using other serial communication channels. You can configure the port parameters in the properties window.

If a Value child is linked, the port number property set in the dialog is ignored. Then the value of the child is always used.

Use the Serial Command channel to execute commands on this channel. Calling the channel will NOT open the port.

The link for the plugin can only be used when a special plugin is created. There is more information about this in the Quest3D SDK. A plugin can process the incoming and outgoing data before making it available for Quest3D or a Serial Data Package

CallChannel

Does not have effect.

Applications

Setup a port for later communication.

Examples

Serial example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Serial Text - Quest3D

Serial Text

Contents

  • 1 Set Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 Examples

Set Text

General

Copy the text of a Text channel into another Text channel.

Children

  1. Input Text - Text
    • Source Text channel for copy operation
  2. Output Text - Text
    • Target Text channel for copy operation

Description

This channel will copy the text of the Text channel that is linked to the first child link position into the second linked Text channel.

CallChannel

When called this channel will actually copy the text from the first to the second linked child

Applications

  • Can be used to copy a text into another channel for later usage or backup
  • Can be used to clear a text

Examples

Serial example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Serial Value - Quest3D

Serial Value

Contents

  • 1 Serial Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
  • 2 Examples

Serial Value

General

Retrieve a byte or bit value from a received data package over a communication port.

Children

  1. Source - Serial Data Package
    • Source data package to retrieve data from.

Description

You can use this channel do retrieve a (binary) value from a Serial Data Package. In the properties window you can select how you want to retrieve the value. Once the value is retrieved, the channel will set itself to that value.

You can select if you want to convert a byte to a value or a bit to a value. For a byte, you can select the position of that byte in the data package. The channel will set itself to the ASCII value of that byte, so it can range from 0 to 255.

If you select to retrieve a bit, then you will also need to set the bit position, this can be 0 to 7 where 0 is left and 7 is most right position of the bit in the byte. The channel will set itself to the bit value found, this can be 0 (zero) or 1 (one).

The value is retrieved every time the channel is used. A Serial Data Package must be linked before a value can be retrieved.

CallChannel

Does not have effect.

Applications

You can read binary data and determine the status of that binary data. You can also read flags from bytes that where received over a serial communication port.

Examples

Serial example

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Set Matrix - Quest3D

Set Matrix

Contents

  • 1 Set Matrix
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Set Matrix

General

Copy the source matrix to the target matrix.

Children

  1. Input Matrix - Matrix
    • Source matrix
  2. Output Matrix - Matrix
    • Target matrix

Description

With this channel you can copy one matrix to another. You can also use any channel that is derived from matrix as a source. For example you can use this channel to copy a motion to a matrix.

To copy a matrix you simply have to link the source as the first child and the destination as the second child. To actually copy the matrix you have to call the matrix.

CallChannel

Copy the "Input Matrix" to the "Output Matrix"

Applications

Store the location of an object. Copy predefined positions to object.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


Set Text - Quest3D

Set Text

Contents

  • 1 Set Text
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Set Text

General

Copy one text to another.

Children

  1. Input Text - Text
    • The source Text
  2. Output Text - Text
    • The destination Text

Description

This channel works pretty straight forward: link the source Text to the first link position, link the destination Text to the second one and call the channel to copy the source Text to the destination.

CallChannel

Copies the first child to the second child.

Applications

Copying one Text to the other.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


Set Value - Quest3D

Set Value

Contents

  • 1 Set Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Set Value

General

Copy the value of this channel or the "Source" child to the "Target" child.

Children

  1. Source - Value
    • Used as a source value to copy into the second child. No child means the value of setothervalue itself.
  2. Target - Value
    • Target in which the value is copied.

Description

With this channel you can copy the value of a Value channel to another Value channel. If no "Source" child is linked the value of the channel itself will be used to copy to the "Target" child channel.

CallChannel

Calling this channel will copy the "Source" (if linked) to the "Target" child.

Applications

  • When this channel is called and the "Target" is a Envelope channel, that channel will create a new Key in the graph at the position it is set to.
  • You can copy the outcome of a routine (like a score) to a value to store it for later use.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


Set Vector - Quest3D

Set Vector

Contents

  • 1 Set Vector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Set Vector

General

Copy one vector to another.

Children

  • Input Vector - Value Vector

The source vector

  • Output Vector - Value Vector

The destination vector

Description

This channel works pretty straight forward: link the source the first link position, link the destination to the second one and call the channel to copy the source to the destination.

CallChannel

Copies the first child to the second child.

Applications

Copying one vector to the other. This is useful for remembering positions or other vectors.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


SetChannelInterfaceType - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetChannelInterfaceType

From Quest3D

Jump to: navigation, search

Function definition

void SetChannelInterfaceType(int interfaceType);

Description

Change the interface type of the current channel

Parameters

Name | Description
int | The new type of interface

Remarks

With this function you are able to change the interface type of the current channel. The interface can be set to one of the following:

' | '
ACO_NORMAL | 0
ACO_PUBLIC | 1
ACO_PUBLICCALL | 2
ACO_PARAMETER | 3
ACO_CUSTOMCHANNELGET | 4
ACO_PUBLICCUSTOMCHANNELGET | 5

Normally you will not need to manually change the interface type of a channel. This is normally done by the user in the editor.

Related Documentation

GetChannelInterfaceType

One Level Up - EngineInterface

Back to Main Index


SetChannelName - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetChannelName

From Quest3D

Jump to: navigation, search

Function definition

void SetChannelName(const char* newName );

Description

Change the displayed name of this channel.

Parameters

Name | Description
newName | A pointer to a NULL terminated constant string with a maximum length of 60

Remarks

You are able to change the name of the channel anywhere in your code. The name of the channel should always be set in the constructor to make sure a name is displayed in the editor. This name is only used in the editor.

Related Documentation

GetChannelName

One Level Up - A3d Channel

Back to Main Index


SetChild - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetChild

From Quest3D

Jump to: navigation, search

Function definition

int SetChild( A3d_Channel* channel, int targetChild, int targetChildNumber);

Description

Connect a child to this channel

Parameters

Name | Description
channel | A pointer to the channel that should be linked as a child
targetChild | Target child (growing) link position number
targetChildNumber | Target child link position in the growing link position

Return value

Returns a integer representing the link number of this channel

Remarks

This function is normally not needed and it is not recommended that it is used. Normally channels do not re-link while a project is running. This function is used by the core engine to create links from and to channels. The function can't be overloaded.

The targetChildNumber parameter is needed when a child is linked to a growing link position and the link should be replaced.

Related Documentation=

GetChild, GetChildCount, GetChildCreateType, GetChildCreationCount, GetChildTypeCount

One Level Up - A3d Channel

Back to Main Index


SetChildCreateType - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetChildCreateType

From Quest3D

Jump to: navigation, search

Function definition

void SetChildCreateType(ChildCreation child, int createNr);

Description

Create a (growing) child link position

Parameters

Name | Description
child | A ChildCreation struct that is used by the function to determine how the link will function
createNr | The position of the child link position

Remarks

Please also read the Channels Communication documentation to learn more on child link positions and how they are defined correctly.

Example

In this example the constructor of a channel is shown where first the SetChildCreationCount function is used to clear all child link positions and then a new growing child link position is added at the first position with SetChildCreateType function.

void Aco_Example3::Aco_Example3() {
    // Clear all child link positions
    SetChildCreationCount(0);

    // Add a growing child link position that accepts all types
    ChildCreation child;
    child.channelType.guid	= CHANNEL_GUID;
    strcpy(child.channelType.name, "All Types Accepted");
    child.requestLink		= -1;
    child.initialize		= false;
    strcpy(child.name, "Channel to call");
    SetChildCreateType(child, 0);
}

Related Documentation

SetChildCreationCount

One Level Up - A3d Channel

Back to Main Index


SetChildCreationCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetChildCreationCount

From Quest3D

Jump to: navigation, search

Function definition

void SetChildCreationCount(int nr);

Description

Remove all child link positions of the channel

Parameters

Name | Description
nr | This is no longer used and is ignored

Remarks

This function is often used before a channel will create its child link positions. If a channel is derived from another channel the child link positions are also derived. If this is not wanted this function can be called before adding new child link positions with the SetChildCreateType function.

Example

In this example the constructor of a channel is shown where first the SetChildCreationCount function is used to clear all child link positions and then a new growing child link position is added at the first position with SetChildCreateType.

void Aco_Example3::Aco_Example3() {
    // Clear all child link positions
    SetChildCreationCount(0);

    // Add a growing child link position that accepts all types
    ChildCreation child;
    child.channelType.guid	= CHANNEL_GUID;
    strcpy(child.channelType.name, "All Types Accepted");
    child.requestLink		= -1;
    child.initialize		= false;
    strcpy(child.name, "Channel to call");
    SetChildCreateType(child, 0);
}

Related Documentation

GetChildCreationCount, SetChildCreateType

One Level Up - A3d Channel

Back to Main Index


SetNewStartChannel - Quest3D

SetNewStartChannel

Contents

  • 1 SetNewStartChannel
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

SetNewStartChannel

General

Set the linked child as new start channel

Children

  1. Start channel - All Types Channel
    • Channel that should be set as start channel

Description

This channel will set the linked child as the new start channel of the current project. The next time the tree is started Quest3D will start at the linked channel. In Quest3D Professional you will be able to actually see the change of start channel while running your project. The arrow indicating the start channel will be moved. You are able to set the start channel in a different channel group than the previous start channel.

CallChannel

Will set the linked channel as new start channel.

Applications

Jump to a new part in your project without linking from one channel group to another.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


SetTimeBase - Quest3D

SetTimeBase

Contents

  • 1 SetTimeBase
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

SetTimeBase

General

Set the time base of the TickCount

Children

  1. Frames Per Second - Value
    • Value that specifies the frames per second.
  2. Constant Timing - Value
    • This child allows you to increase all timing with a constant step each frame. This values overrules the other child.
  3. Interpolate Count - Value
    • Number of frames to interpolate the tick count with.

Description

There is no standard for the time base. For example for film they use 24 frames per second and with the NTSC TV system they use 30 frames per second. Quest3D uses 25 frames per second by default. This means that a timer that has a value of 4.0. Represents 4/25th of a second. This can be quite frustrating if you are using motion capture data that is captured at 60 frames per second.

This channel sets the time base of the TickCount. To set the time base you need to call this channel.

The first child defines the frames per second of all timing. With the second value you can make all timers increase with the same step each frame. Normally this value is adapted to the frame rate of the display. If you use a constant step for each frame you will see that objects move faster as the frame rate increases. If you link a child to the second link position the first child is not used anymore.

The third value child can be used to smooth your production. This is normally only needed when a viewers will show hickups. Increase this value to compensate these hickups. When no child is linked the default value of 5 is used.

CallChannel

Sets the time base.

Remarks

Changing the time base also affects the TickCount and Timer Value channels.

Applications

Sets the interval between frames. By default this is 0.04(25fps). Frames in this context should not be confused with the refresh rate of the display. The refresh rate of the display depends on the complexity of the scene ,the hardware and a lot of other factors.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | Animation


SetTimeStamp - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetTimeStamp

From Quest3D

Jump to: navigation, search

Function definition

void SetTimeStamp();

Description

Change the time stamp value of this channel into the current time

Remarks

The time stamp value is stored in the channel itself and is stored as a DWORD. You are able to retrieve the current time stamp of a channel with the GetTimeStamp function. This function is often used to determine if the data of a channel has been changed.

Related Documentation

GetTimeStamp

One Level Up - A3d Channel

Back to Main Index


SetTreeCalculateCount - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SetTreeCalculateCount

From Quest3D

Jump to: navigation, search

Function definition

void SetTreeCalculateCount(int newValue);

Description

Change the tree count value.

Parameters

int newValue An integer that will be used to change the current tree count value

Remarks

The tree count number is changed every time the channel tree (graph) is called. The core engine will use this number for Loop Protection. This number can be used to determine if a function or channel is called multiple time in the same tree count.

With this function you are able to change this number. This function is normally not used, and you will probably never need to use it.

Related documentation

GetTreeCalculateCount, Loop Protection, CheckRenderCount

One Level Up - EngineInterface

Back to Main Index


ShaderInfo - Quest3D

ShaderInfo

Contents

  • 1 ShaderInfo
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

ShaderInfo

General

Used by the ShaderSurface channel for linking children

Children

  1. Information for current Shader - All Types Channel
    • Channels that are needed by the ShaderSurface channel.

Description

This channel is used by the ShaderSurface channel for linking channels. The ShaderSurface can be configured to different kind of shaders. Every shaders needs different children.

This channel can hold the children that are needed by the ShaderSurface channel. See the documentation of the ShaderSurface channel to see what children are needed for the selected shader.

Please note that types of channels can be mixed and do not need a certain fixed link position. For example:

  • Link 1: Texture 1
  • Link 2: Value 1
  • Link 3: Texture 2
  • Link 4: Value 2

Is the same as:

  • Link 1: Value 1
  • Link 2: Value 2
  • Link 3: Texture 1
  • Link 4: Texture 2

CallChannel

Calling this channel has no effect.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Shaders | System


ShaderSurface - Quest3D

ShaderSurface

Contents

  • 1 ShaderSurface
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 ShaderInfo child
      • 1.3.2 Blur
      • 1.3.3 Bumpmapping (reflective)
      • 1.3.4 Bumpmapping (Diffuse & Specular)
      • 1.3.5 Fur
      • 1.3.6 Glass
      • 1.3.7 Halo
      • 1.3.8 Edge Detection
      • 1.3.9 Membrane
      • 1.3.10 Ocean Waves
      • 1.3.11 Radial Blur
      • 1.3.12 Reflective Water
      • 1.3.13 Sharpen
      • 1.3.14 Toon
    • 1.4 Remarks

ShaderSurface

General

Vertex and Pixel shader surface

Children

  1. Shader Info - ShaderInfo
    • Channel that will hold the actual parameters of the shader that can be configured.
  2. Textures - Texture
    • Some shaders need one or more textures
  3. Material - Material
    • Some shaders also need material settings if textures are used
  4. Object to use - 3D ObjectData
    • Most shaders need object data to transform or as source for the shader

Description

This channel will use a pixel and/or vertex shaders to generate its surface. In the dialog you are able to configure what shader should be used:

ShaderInfo child

This child (that is automatically created) is needed for almost every shader. When a shader can be configured all parameters should be linked to this channel. This means channels are not directly linked to this channel but to the ShaderInfo child. Please take a look at the ShaderInfo channel documentation for more information.

Supported Shaders

Every selected shader will need a different number and types of children linked. The dialog itself will show what children are needed, here is a complete list:

Blur

This channel is able to blur the texture that is linked:

  1. ObjectData - Object data to use
  2. Material - Material settings for texture
  3. Texture - Source texture
  4. Shader Info - Parameters for the shader

The Surface Info channel needs the following channels linked:

  1. Value - Blurryness (0 - 4)

Bumpmapping (reflective)

This channel is able to bumpmap the texture that is linked. It needs the following children:

  1. ObjectData - Surface Mesh
  2. Material - Can be left out
  3. Texture - Bump Texture
  4. Texture - Color Texture
  5. Shader Info - Parameters for the shader

The Surface Info channel needs the following channels linked:

  1. Value - Bump scale

Bumpmapping (Diffuse & Specular)

This pixel shader needs the following channels:

  1. ObjectData - Object data to use
  2. Material - Material settings for surface
  3. Texture - Color texture for surface
  4. Texture - Bump texture for surface
  5. Texture - Lighting texture (lightmaps on CD-ROM)
  6. Shader Info - Parameters for the shader

The shader info needs the following channels linked:

  1. Value - Bump scale (>0)
  2. Value Vector - Light position (for direction)

Fur

This channel is able to blur the texture that is linked: it needs the following children:

  1. ObjectData - Object data to use
  2. Texture - Fur texture
  3. Shader Info - Parameters for the shader

The Surface Info channel needs the following channels linked:

  1. Fur passes - The number of passes for the fur effect
  2. Fur length - Offset for each pass
  3. Draw surface - Allows you to draw a surface beneath the fur when this value is 0.0.
  4. Light position - position of the light
  5. Hair direction - move the fur effect in a direction

Glass

The channel itself needs the following channels linked:

  1. ObjectData - Object data to use
  2. Material - Material settings
  3. Texture - Color Map
  4. Texture - Environment Map

In this template the environment map is also used as the color map. This vertex shader does not need the Shader Info channel.

Halo

Shader needs to have linked:

  1. ObjectData - Object data to use

This shader needs the following channels linked to the Shader Info channel:

  1. Value - Halo effect distance
  2. Value Vector - Color

You are able to use textures

Edge Detection

This shader uses a convolution filter to achieve a edge detect effect.

This channel needs the following channels linked:

  1. ObjectData - Object data to use
  2. Material - Material settings for texture
  3. Texture - Source texture to blur

The Shader Info channel is not used

Membrane

Creates a membrane effect.

It needs the following children:

  1. ObjectData - Object data to use
  2. Texture - Gradient map for the membrane

This effect does not use the shader info channel.

Ocean Waves

The Ocean Waves Pixel/Vertext shader needs the following channels (ObjectData not needed):

  1. Material - Material settings for texture
  2. CubeTexture - Cube texture that is added and reflected to simulate specular lighting.

The Shader Info channel needs the following channels linked:

  1. Value - Time index for wave motion
  2. Value - Intensity of the environement map
  3. Value - Texture offset for the environment map (>0)
  4. Value - Wind Direction (0 - 2pi)
  5. Value - Wind Speed (>0)
  6. Value - Wave Height (0 - 1000+)
  7. Value - Wind influence (0 - 100+)
  8. Value - 'Choppyness' Factor (0 - 1)
  9. Value - Wave tile count (0 - 5)
  10. Value Vector - Surface color
  11. Value Vector - Water color

Radial Blur

A radial blur effect on the source texture.

This channel needs the following channels linked:

  1. ObjectData - Object data to use
  2. Material - Material settings for texture
  3. Texture - Source texture to blur

The Shader Info channel can have the following channels linked:

  1. Value Vector - Blur Direction
  2. Value Vector - Effect Color
  3. Value - Passes to render (>0)
  4. Value - Alpha intensity (>0)
  5. Value - Pass offset (0-1)

Reflective Water

The shader channel itself needs the following channel linked:

  1. ObjectData - Object data to use
  2. Material - Material to use
  3. Texture - Alpha channel will set where the water will wave (black = wave)
  4. Texture - Shape that will hit the water
  5. CubeTexture - Reflection of water

The Shader Info channel needs the following channels linked:

  1. Value - Water speed (0 - 1)
  2. Value - Wave speed (0 - 4)
  3. Value - Wave fall off (0 - 1)
  4. Value - Bounce Factor (>0)
  5. Value - Splash Factor (>0)
  6. ParticleObject - Particles generate waves

You are able to link multiple particle object channels to shader info channel. When a particle hits the water it will generate a wave.

Sharpen

This shader will sharpen the source texture.

This channel needs the following channels linked:

  1. ObjectData - Object data to use
  2. Material - Material settings for texture
  3. Texture - Texture to sharpen

The Shader Info channel is not used

Toon

This shader needs the following children.

  1. 3D ObjectData - Mesh for the surface
  2. This effect does not need a material
  3. Texture - Shading Texture (Used to shade the surface)
  4. Texture - Edge Image (Used to draw edges)
  5. PixelShaderInfo - parameters for the surface

You need to link the following parameters to the Shading Info:

  1. Light position
  2. Surface color

Remarks

Vertex shaders can be used on every 3D card because DirectX support a software version. Pixel shaders can only be used on 3D cards that support pixel shaders, there is no software version

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Shaders | Objects and Rendering


Tutorials/Object Oriented Programming/Singleton Pattern - Quest3D

Tutorials/Object Oriented Programming/Singleton Pattern

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Singleton
    • 1.1 Introduction
    • 1.2 Functional description and context
    • 1.3 Design
    • 1.4 Singleton.cgr
    • 1.5 start.cgr
    • 1.6 Examples
    • 1.7 External Links

Singleton

Introduction

A singleton-pattern restricts the instantation of a class to one object. This pattern can be used in many patterns, like a factory, scenegraph or manager if you want to ensure that only one instance of this class exists.

A good example is the interface of a subsystem, which is used to access all the functionality in the subsystem. This interface is usually a singleton, since you want to ensure the subsystem has only ONE point of entry.

The singleton is also considered an anti-pattern, since most programmers tend to misuse it to access "global variables" stored in this pattern across the application. Handles are not needed, since the management of the, single instance, is done within the singleton itself. This construction can seem useful, but having references to one single instance all over your system usually leads to code which is unreadable for your fellow programmers.

Functional description and context

A singleton-pattern in Quest3D is easy, yes even more than it is in C++. In Quest3D a singleton is actually just an interface with static members and static functions with a default implementation. This construction doesn't require a class and thus no instantiation whatsoever, which in turn ensures that there's only one instance of this interface: the default one.

In this tutorial we will define an interface with a static text, and static functions to set this text and render it.

So what do we need?

  • An interface with static members and static functions with a default implementation;
  • A start CGR to set the text and call the "draw"-function from the singleton interface.

Design

As shown in the diagram:

ISingleton has:

  • a static member "myText" which will contain the "to-be-rendered"-text;
  • a static function to set "myText";
  • a static function to render "myText".

Singleton.cgr

1. Create the "ISingleton"-interface;

2. Implement the "setText"-function:

Note that there is not "This"-channel linked to our member. Since it's static, we ensure there is only one instance, hence we don't need the "This"-channel.

3. Implement the "draw"-function:

And again... no "This"-channel.

start.cgr

4. Create some init-logic to call ISingleton's "setText"-function and set some text, for instance "There can be only one!". No instance-reference is needed, since we're calling a static interface function.

5. Create default render-logic and call the "draw"-function. Again, no instance-reference is needed.

And voila, a singleton.

In case you're not a solid believer, just test it with the following construction:

  • Create the "Singleton"-class which implements the "ISingleton"-interface;
  • In start.cgr, create instances A and B of the "Singleton"-class;
  • In the init-routine, call the "setText"-channel for both instances A and B and set the following text:

A. "Some text..."

B. "There can be only one!"

Make sure this time you DO link the class instance-references to the "setText"-channel.

  • Update the renderroutine to switch between the "draw"-function of A and B.

Switch between instance A and B and you'll see that both instances A and B have the same text: "There can be only one!"

Examples

  • Singleton Pattern
  • Singleton Pattern test

External Links

  • Singleton pattern on wikipedia

Categories: Tutorials | OO


SkinnedCharacter - Quest3D

SkinnedCharacter

Contents

  • 1 SkinnedCharacter
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Properties Window

SkinnedCharacter

General

Create skinned characters that use bones to deform the object.

Children

  1. Animation Set - MotionSet
    • Motion Set Used.
  2. Skinning Data - 3D ObjectData
    • Objectdata used as a source weight information is stored in the SkinnedCharacter itself.

Description

This channel will be created when the .X importer imports a character file. This channel will then remember the weight information and the bone rest positions.

The MotionSet child is used to determine the animation of the separate bones. You can import the same object with different motion sets to create the different MotionSets. Those sets can then be interpolated by using the MotionSetBlender channel. When importing a new SkinnedCharacter channel will be created for each set which are redundant. In the future there will be a separate MotionSet import function.

In the interface you can now turn on "Force Indexed Skinning" this will make sure the old indexed skinning method is used. This might fix rendering your model if it did render in older version of Quest3D but is now invisible. This doesn't however fix your model which still has problems.

Properties Window

In the properties window you can see the list of bones that the skinned character is using and the numbers assigned to it together with the names of them from the imported model.

You can also select the skinning method. Normally "non-indexed" skinning is used to display a skinned character, but when this fails, you can force Quest3D to use "indexed" skinning.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Objects and Rendering


SkinnedMesh - Quest3D

SkinnedMesh

Contents

  • 1 SkinnedMesh
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Remarks
    • 1.5 Applications
    • 1.6 Tips

SkinnedMesh

General

A skinned mesh. (3D mesh with bones)

Children

  1. Skinning Data - 3D ObjectData
    • This is the source mesh. It's the mesh you want to deform with bones.
  2. Bones - Bone
    • These are the Bones. You want to use to deform the mesh.

Description

A skinned mesh is used for animating living creatures, cartoons and even humans. The skinned mesh accepts a source mesh and one or more Bone(s). The bones act like real bones, they bend the mesh.

Remarks

You can only configure this channel in the Animation editor or use imported data.

Applications

Animating cartoons, humans, deforming meshes.

Tips

You can also use a skinned mesh to deform text or other objects.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Objects and Rendering


SkinnedMorph - Quest3D

SkinnedMorph

Contents

  • 1 Skinned Morph
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

Skinned Morph

General

Morph from a source skinned object to multiple skinned morph targets.

Children

  1. Source Objectdata - 3D ObjectData
    • Source skinned shape of the object.
  2. Skinned Morph Targets - 3D ObjectData
    • Different morph targets.
  3. Morph percentage - Value
    • What is the influence of each morph target.

Description

When initializing the Morph object computes the difference of each of the morph targets to the original object. This difference is stored and when the object is drawn the final object is calculated. Only the vertexes that are different for each morph target are computed. The values that can be linked determine how the morph target is used.

The values correspond to the way the morph targets are linked. For example morph target number 4 will look at the 4th linked value to determine how it is influenced. The value is not limited so a value of minus 1 will create an effect of taking out the vertexes that are different in the morph target. Morph targets also complement each other so if a vertex is shared by a morph target both will change that vertex.

The morph targets need to have the same vertex count as the source objectdata.

The childeren are checked to be changed to see if the Morph channel needs to re-initialize its morph data. DO NOT use a channelswitch to switch morph targets since that will re-initialize the data each frame which is really slow!

CallChannel

This will render the objectdata. The preferred method is using a Surface channel.

Remarks

This channel has many uses. From walking characters to blinking an eye to changing a mouth. You can use envelopes as children for an easy method of determining from a single value which morph target is used.

This skinned morph version is almost identical in its use with the normal morph channel. However one important difference is that it needs to recompute a lot of data when the morph values change. As long as the morph values are stable it is fast again but changing them will cost performance. Best use for this channel is to only use it to configure characters and leave the parameters ones configured.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Objects and Rendering


Reference Manual/Editor/Animation Section/Skinning - Quest3D

Reference Manual/Editor/Animation Section/Skinning

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Contents

  • 1 Skinning
    • 1.1 General
    • 1.2 Configuring the rest position of a bone
    • 1.3 Configuring the weight envelope of a bone
    • 1.4 Display options for bones
    • 1.5 Related Documentation

Skinning

General

Add bones and define skinning information on an object

Example of a skinned mesh

Skinning (or smooth skinning) is a method for simulating bones under a skin. Without skinning an object has only one Matrix (location). If you want to move the head of a character while the body stays at the same position you need to create two separate objects: one for the body and one for the head. Below you see a picture of this solution.

Animating a cow without skinning

As you can see the cow looks rather ridiculous with its neck split into two pieces. Skinning is a method for specifying multiple matrices for one object. This would solve the problem of the head being detached from the body but you would expect the neck smoothly to blend into the head. Below you see a picture where this is not the case.

The problem is that each point in the mesh is either attached to one bone or the other. This shows up in the mesh as a ‘crack’ between the one vertex group and the other. The solution for this is to give each vertex up to 4 matrices that specify the location of the vertex. Each matrix has a weight so some matrices are more important for the vertex than others. In the head of the cow the weight for the ‘head matrix’ would be much larger than the ‘body matrix’.

Adding bones to an object Before you can add bones an object you need to make sure the object has the same type of objectdata for each surface. To add bones you need to select an object. You can do this by clicking in the object list.

Once you have selected an object you can go to the skinning tab to start skinning your object.

To add a bone you simply press the ‘Add Bone’ button. Two things will happen after you pressed the ‘Add Bone’ button: the bone you added appears in the 3D view and the object is set to its rest position. When you are using bones the matrix of the object has no effect. This is why the object is set to its ‘rest position’ the rest position of an object is the position where the object has no scaling, no rotation and no translation. Before you can start using your newly added bones you need to configure them.

Configuring the rest position of a bone

By pressing the ‘Bone Setup’ button you go into bone setup mode. In the bone setup mode you configure the weight envelope for the bone and the rest position of the bone. The rest position of the bone is the position of the bone where the mesh is not deformed. In bone setup mode the mesh is shown in its rest state. You can easily position the bones so they match up with the mesh. If you are satisfied with the rest position of the bone you must press the ‘Set Rest Position’ button to set the rest position of the bone.

You now know how to add bones to an object and how you can set their rest position. To test the results you must press the ‘Apply’ button. The weights of the mesh are recalculated and you can rotate one of the bones to see their effect.

A ciylinder deformed by two bones

Configuring the weight envelope of a bone

Each bone has a 3D envelope to specify the weight of the envelope at each position of the mesh. The weights are calculated with the bones and the mesh in their rest position.

Two bones with different lengths

There are two types of bones: a point shape and a line shape. A line shape with a length of 0.0 is the same as a sphere shape. The only difference is that the point shape has no length and it takes less time to calculate its weights. The line shape has a length parameter you can use to set the length of the bone. You can use the strength parameter of a bone to set the weight at the minimum distance. Each bone has an inner influence range and an outer influence range.

How the weight envelope is used to calculate the weight

The weight of the bone is the same as its strength value at the minimum distance and the weight of the bone is 0.0 at the maximum distance. Skinning supports 4 weights per vertex. This means that the 4 biggest weights are used for each vertex even if more than 4 bones influence the vertex.

Display options for bones

Here the bone influence display is enabled

There are 3 ways you can display bones:

  • You can show only the position and the length of each bone.
  • You can also show the influence ranges for the selected bone.
  • You can also show all influence ranges.

Related Documentation

The SkinnedMesh and Bone channels are used for these operations. See the documentation of these channels for more information.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


SocketAction - Quest3D

SocketAction

Contents

  • 1 SocketAction
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Connect (Text,Value …)
      • 1.5.2 Disconnect
      • 1.5.3 Send Data (Text)
      • 1.5.4 Start Logging (Text)
      • 1.5.5 Stop Logging
    • 1.6 Remarks
    • 1.7 See Also

SocketAction

Children

  1. Text – Depends on the selected command.
  2. Value – Depends on the selected command.

Description

This channel can be used to execute a socket command.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the combobox in the SocketAction channel interface

Commands

Connect (Text,Value …)

This command tries to connect to a server with the IP Address specified in the Text child channel and the port number specified in the Value child channel.

Disconnect

Disconnects the connection. No children need to be linked, as only one connection can be open at one time.

Send Data (Text)

Send data through the socket connection. This option requires a Text child, that contains the string to be sent.

Start Logging (Text)

Starts logging to a file. It requires a Text child, that contains the path to a text file. This text file will be filled with all sent and received strings.

Stop Logging

Stops logging to the text file.

Remarks

The current implementation of the socket channels do not support listening to ports and accept connections. You can set up a connection to the server and send/receive data to/from that connection. Only one connection can be opened at one time.

See Also

SocketInfoValue, SocketString

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


SocketInfoValue - Quest3D

SocketInfoValue

Contents

  • 1 SocketInfoValue
    • 1.1 Description
    • 1.2 Remarks
    • 1.3 See Also

SocketInfoValue

Description

This is a Channel of type Value that indicates whether the socket connection is alive. 0 indicates no connection, 1 indicates a connection.

Remarks

The current implementation of the socket channels do not support listening to ports and accept connections. You can set up a connection to the server and send/receive data to/from that connection. Only one connection can be opened at one time.

See Also

SocketAction, SocketString

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


SocketReceiver - Quest3D

SocketReceiver

Contents

  • 1 ScoketReceiver
    • 1.1 General
    • 1.2 Description
    • 1.3 See Also

ScoketReceiver

General

Missing Documentation.
No Comments

Description

Missing Documentation.
No Comments

See Also

SocketAction, SocketInfoValue

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5 | Incomplete


SocketString - Quest3D

SocketString

Contents

  • 1 SocketString
    • 1.1 Description
    • 1.2 Remarks
  • 2 See Also

SocketString

Description

The SocketString channel (basetype Text) updates itself when a new string is received from the socket connection. The string will be copied in the channel, and can be used for parsing or other text-related actions. The timestamp will be updated when a new string is received.

Remarks

The current implementation of the socket channels do not support listening to ports and accept connections. You can set up a connection to the server and send/receive data to/from that connection. Only one connection can be opened at one time.

See Also

SocketAction, SocketInfoValue

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | New in version 3.5


SoftwareStencilShadowObject - Quest3D

SoftwareStencilShadowObject

Contents

  • 1 SoftwareStencilShadowObject
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

SoftwareStencilShadowObject

General

Render a shadow volume of the connected object in your stencil buffer.

Children

  1. Shadow Object - 3D Object
    • Object to render in the buffer

Description

This channel is used with the StencilShadow channel to render a volume in the stencil buffer. This can be used to render shadows over your scene. This version will use software mode to render the volume. It is able to render almost all objects correctly including skinned objects.

CallChannel

Calling this channel does nothing.

Applications

Render a volume on your stencil buffer.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Sound Command - Quest3D

Sound Command

Contents

  • 1 Sound Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Sound Command

General

Sends a command to a Sound File channel.

Children

  1. Commmand parameters - various types
    • Here you need to link the sound files and other parameters the channel needs

Description

Call this channel to send a command to a Sound File channel. Double click the channel to get a list of available commands. Each command has a clear description of its function and what children you need to link.

CallChannel

Sends the command you have selected in the dialog.

Remarks

Never Call this channel each frame. Use a OneTime or a Trigger to call this channel.

Applications

Playing, stopping, changing settings and loading of sounds.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | Commands and Settings


Sound File - Quest3D

Sound File

Contents

  • 1 Sound File
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Dialog options
      • 1.4.1 Speed
      • 1.4.2 Panning
      • 1.4.3 Volume
      • 1.4.4 Repeat
      • 1.4.5 3D Positioning, none/simple/normal/best
      • 1.4.6 3D sound settings
    • 1.5 CallChannel
    • 1.6 Remarks
    • 1.7 Applications

Sound File

General

This channel is used to load ans store a sound file into Quest3D

Children

  1. Sound Motion - Matrix
    • This is the position of the sound. This child is only useful when the sound is in 3D mode.
  2. Volume - Value
    • This child allows you to change the volume of the sound. The volume should be given as a percentage so value ranges from 0 to 100.
  3. Speed - Value
    • This child allows you to change the speed of the sound. As the speed increases, the pitch also increases. The speed should be given as a percentage. The speed can be any value between 0 and 200 percent.

Description

This channel can load and playback a sound. The sound can be configured as a 2D sound source or a 3D sound source.

Dialog options

At the top you see several buttons to control the playback. You can play, stop or pause the sound using these controls. The top left icon opens a file dialog to load a new sound.

Speed

This setting allows you to change the playback speed of the sound. The speed can range between 0 and 200 percent. If a child is linked that sets the speed or you set the speed with a command, this setting is overridden.

Panning

This setting allows you to set the panning of the sound. A 50 percent panning means the sound divided equally over both speakers. A 0 percent panning disables the right speaker entirely and a 100 percent panning disables the left speaker. The panning setting is overridden if you set the panning with a sound command.

Volume

This setting allows you to change the volume of the sound. If a child is linked that sets the volume or you set the volume with a command, this setting is overridden. The volume ranges from 0 to 100 percent.

Repeat

If this option is checked, the sound loops.

3D Positioning, none/simple/normal/best

This pull down menu allows you to specify the 3D sound mode. You can only use 3D sound if the sample is mono. There are three levels of sound virtualization available. Simple 3D sounds only change the panning and volume of the sound. Normal 3D sounds produces a good 3D audio effect including muffeling and timing differences. The best 3D audio mode uses more CPU but has better quality.

A 3D sound needs a matrix as a child to specify its position. The position of the ears should also be specified using Listener channel.

3D sound settings

For performance reasons you can mute a 3D sound source when it at a certain volume. 1/100th of the original volume is a good value.

To differenciate between load sound sources and silent ones you can specify the number of units the sound takes to halve in volume. A bee for example is inaudible at short distance so it should halve every 0.1 units. A jumbo jet can even be heard from several hundreds of meters so you could set the halving distance to 10 units.

CallChannel

Plays the sound.

Remarks

  • You can load *.wav files only.
  • To play, stop or change the properties of a sound, you can use Sound Command
  • You should not call a sound file each frame. If you want to play the sound, use a Trigger or OneTime

Applications

Music, sound effects

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound


Tutorials/Object Oriented Programming/Specialization - Quest3D

Tutorials/Object Oriented Programming/Specialization

< Tutorials | Object Oriented Programming
Jump to: navigation, search

Contents

  • 1 Specialization (also known as overrides)
    • 1.1 Introduction
    • 1.2 Functional Description and Context
    • 1.3 Design
    • 1.4 Primitive.cgr
      • 1.4.1 IPrimitive's update() function
      • 1.4.2 IPrimitive's member accessors
    • 1.5 RotatingPrimitive.cgr
    • 1.6 CustomGeometry.cgr
    • 1.7 Start.cgr
      • 1.7.1 Project files

Specialization (also known as overrides)

This tutorial was made with an early version of 4.0. Some of the channels might have different names. Example: the "interface-tab" is called "projecttree" in 4.0.

Introduction

In the Part 1.1 (ref) we've created a primitive interface and framework to create and render these primitives. The general concept of this demo was that you have one base type, the primitive, and can set it's properties. But what if you want to do different things with your objects. For instance use a different update or draw routine for the object instances. This can be done using the 'override'-feature, which in OO is also known as specialization.

In this tutorial we add a new class to our framework: the "Rotating Primitive"-class in which we will override the update function and make the primitive spin around it's axis using the override feature for the IPrimitive update() function. The second part of this tutorial shows an override of the IPrimitive draw() function, in which we'll render custom geometry instead of the default primitive.

Functional Description and Context

So, again, what do we need?

1. An updated definition of IPrimitive (including the update() function construct); 2. The class implementation RotatingPrimitive, which overrides:

  update() - Rotates the primitive around the Y-axis.

3. The class implementation CustomGeometry, which overrides:

  draw() - Draws a custon defined shape using the position, rotation and size members from IPrimitive.

4. An updated start.cgr to add some instances of our newly created classes.

Design

As shown in the diagram, we'll add some new functions to the IPrimitive interface:

  • update() - using this function we will be able to update the IPrimitive member properties;
  • Property functions - since we want access the IPrimitive members in the class instances we have to define some accessors:
 getPosition();
 getRotation();
 setRotation(newRotation);
 getSize().

Primitive.cgr

For starters we define a new public function update():

1. Open de Primitive.cgr from tutorial 1.1.

IPrimitive's update() function

2. Open de OO Editor, select the IPrimitive Interface and add a new function (type: Channelcaller) and name it "update":

3. Drag the target for the update()-function into the channelgraph:

The update function will not be implemented: calling it defaults in 'no action'. The action for the rotating primitive will be implemented in a the function-override, which will be implemented in the RotatingPrimitive.

Next up: the member accessors.

IPrimitive's member accessors

Since we made all the members in IPrimitive private, we can't access these members outside the IPrimitive context. Therefor we need special functions which give us the ability to get- and set- the member values. These special functions are called accessors. Why not make the members public instead? You could opt for it, but by doing that you'll have no control over who, when and where updates the members. By defining accessors you force a path for the update, thus control the update of the members and avoid possible corruption, dirty reads, etc.

We'll be overriding the draw() routine in the CustomGeometry class. As shown in the first tutorial, the default draw routine uses the position-, rotation-, size- and type-members to draw the primitive. Since the CustomGeometry will not use a primitive as basetype only the first three members will be needed by the override, so let's create accessors for these members:

4. In the OO Editor create a new function, but this time of the type "Vector" and name it "getPosition":

5. Drag the Target into the channelgraph and let's implement the function logic:

The implementation in the screenshot above seems a bit too complicated for just returning a value vector, but do know that you usually do some checks and/or operations on the member before you return it. Nevertheless, if you just want to return the member value there is a 'trick' to do it the easy way:

6. Drag the "position" member vector into the channelgraph and link the "This"-pointer of the "getPosition"-function to the memberchannel:

7. Now delete the "getPosition"-function channel:

8. Rename the "position' member vector to "IPrimitive->getPosition" and make it public:

9. Doubleclick on the Target of getPosition in the OO-Editor and relink the target with the just created public channelcaller:

There you have it... a member vector accessor without all the complicated stripping and rebuilding of the vector.

Note: this trick can only be used for native Quest3D types (text, value, value vector, matrix). Under no circumstances should you try this with the other channels!

10. Repeat 4->5(or 9) to create the other member accessors:

  • getRotation();
  • getSize().

Now that we have all the get-functions all we have to do is create a set-function for the rotation-member. This, since we want to update the "Rotation"-member in the "RotatingPrimitive"-class.

11. Create the function setRotation() using the OO Editor (type: ChannelCaller).

With a set-function we need a parameter, the new rotationvector, as input, so let's add that:

12. Make sure the "setRotation"-function is selected and click the "Add parameter" button in the parameters section.

The channeltype dialog pops up.

13. Select the type "Value Vector" and click on OK.

14. Name the parameter "New Rotation".

The "setRotation"-function now has a functionparameter:

Let's implement setRotation().

15. Drag the target of setRotation into the channelgraph.

16. In the interfaces control tab (bottom left corner) click open the IPrimitive tree.

The '+'-symbol in front of the setRotation()-function indicates there are function parameters available for this function.

17. Open the setRotation()-tree and drag the "newRotation"-parameter into the channelgraph:

18. Using the interfaces control tab, drag the "rotation"-member into the channelgraph aswell, and create a setVector-routine:

Make sure not to forget to link the "This"-pointer to the "rotation"-member channel.

There you have it... 3 get functions and the setRotation set-function:

RotatingPrimitive.cgr

With the member accessors added to the IPrimitive interface it's time to create the "RotatingPrimitive"-class and create the first override:

19. Create a new channelgroup "RotatingPrimitive"; 20. In de OO Editor, create the class "RotatingPrimitive" which implements the interface "IPrimitive";

21. In de memberpane of the OO Editor, select the "update"-function, rightclick and select "override":

The "update"-row will turn green.

22. Drag the update-target into the channelgraph and implement the override:

That's it... We've overridden the "update"-function for RotatingPrimitive.

CustomGeometry.cgr

And now for a specialization of the IPrimitive's "draw"-function:

23. Create a new channelgroup "CustomGeometry";

24. Create a new class called "CustomGeometry" which implements the" IPrimitive"-interface;

25. In de memberpane of the OO Editor, select the "draw"-function, rightclick and select "override".

26. Drag the "draw()"-functiontarget into the channelgraph and implement the draw routine for your custom geometry:

Start.cgr

29. Import the "start.cgr" from the previous tutorial and add the "update"-functioncall to the Class Instance List iterator graph:

30. Clear the Class Instance List entries and add the following:

  • Mascot: CustomGeometry, position(0,0,0), size(1,1,1)
  • Red spinning box: RotatingPrimitive, position(-2,0,0), size(0.5,0.5,0.5), color(1,0,0), type(box)
  • Blue sphere: Primitive, position(2,0,0), size(0.5,0.5,0.5,0.5), color(0,0,1), type(sphere)

Which should give you the following result:

Project files

002 - Overrides.zip

Categories: Tutorials | OO


Tutorials/Object Oriented Programming/Specialization - Quest3D

Tutorials/Object Oriented Programming/Specialization

< Tutorials | Object Oriented Programming(Redirected from Tutorial/OO/Basic Concepts/Specialization (also known as overrides))
Jump to: navigation, search

Contents

  • 1 Specialization (also known as overrides)
    • 1.1 Introduction
    • 1.2 Functional Description and Context
    • 1.3 Design
    • 1.4 Primitive.cgr
      • 1.4.1 IPrimitive's update() function
      • 1.4.2 IPrimitive's member accessors
    • 1.5 RotatingPrimitive.cgr
    • 1.6 CustomGeometry.cgr
    • 1.7 Start.cgr
      • 1.7.1 Project files

Specialization (also known as overrides)

This tutorial was made with an early version of 4.0. Some of the channels might have different names. Example: the "interface-tab" is called "projecttree" in 4.0.

Introduction

In the Part 1.1 (ref) we've created a primitive interface and framework to create and render these primitives. The general concept of this demo was that you have one base type, the primitive, and can set it's properties. But what if you want to do different things with your objects. For instance use a different update or draw routine for the object instances. This can be done using the 'override'-feature, which in OO is also known as specialization.

In this tutorial we add a new class to our framework: the "Rotating Primitive"-class in which we will override the update function and make the primitive spin around it's axis using the override feature for the IPrimitive update() function. The second part of this tutorial shows an override of the IPrimitive draw() function, in which we'll render custom geometry instead of the default primitive.

Functional Description and Context

So, again, what do we need?

1. An updated definition of IPrimitive (including the update() function construct); 2. The class implementation RotatingPrimitive, which overrides:

  update() - Rotates the primitive around the Y-axis.

3. The class implementation CustomGeometry, which overrides:

  draw() - Draws a custon defined shape using the position, rotation and size members from IPrimitive.

4. An updated start.cgr to add some instances of our newly created classes.

Design

As shown in the diagram, we'll add some new functions to the IPrimitive interface:

  • update() - using this function we will be able to update the IPrimitive member properties;
  • Property functions - since we want access the IPrimitive members in the class instances we have to define some accessors:
 getPosition();
 getRotation();
 setRotation(newRotation);
 getSize().

Primitive.cgr

For starters we define a new public function update():

1. Open de Primitive.cgr from tutorial 1.1.

IPrimitive's update() function

2. Open de OO Editor, select the IPrimitive Interface and add a new function (type: Channelcaller) and name it "update":

3. Drag the target for the update()-function into the channelgraph:

The update function will not be implemented: calling it defaults in 'no action'. The action for the rotating primitive will be implemented in a the function-override, which will be implemented in the RotatingPrimitive.

Next up: the member accessors.

IPrimitive's member accessors

Since we made all the members in IPrimitive private, we can't access these members outside the IPrimitive context. Therefor we need special functions which give us the ability to get- and set- the member values. These special functions are called accessors. Why not make the members public instead? You could opt for it, but by doing that you'll have no control over who, when and where updates the members. By defining accessors you force a path for the update, thus control the update of the members and avoid possible corruption, dirty reads, etc.

We'll be overriding the draw() routine in the CustomGeometry class. As shown in the first tutorial, the default draw routine uses the position-, rotation-, size- and type-members to draw the primitive. Since the CustomGeometry will not use a primitive as basetype only the first three members will be needed by the override, so let's create accessors for these members:

4. In the OO Editor create a new function, but this time of the type "Vector" and name it "getPosition":

5. Drag the Target into the channelgraph and let's implement the function logic:

The implementation in the screenshot above seems a bit too complicated for just returning a value vector, but do know that you usually do some checks and/or operations on the member before you return it. Nevertheless, if you just want to return the member value there is a 'trick' to do it the easy way:

6. Drag the "position" member vector into the channelgraph and link the "This"-pointer of the "getPosition"-function to the memberchannel:

7. Now delete the "getPosition"-function channel:

8. Rename the "position' member vector to "IPrimitive->getPosition" and make it public:

9. Doubleclick on the Target of getPosition in the OO-Editor and relink the target with the just created public channelcaller:

There you have it... a member vector accessor without all the complicated stripping and rebuilding of the vector.

Note: this trick can only be used for native Quest3D types (text, value, value vector, matrix). Under no circumstances should you try this with the other channels!

10. Repeat 4->5(or 9) to create the other member accessors:

  • getRotation();
  • getSize().

Now that we have all the get-functions all we have to do is create a set-function for the rotation-member. This, since we want to update the "Rotation"-member in the "RotatingPrimitive"-class.

11. Create the function setRotation() using the OO Editor (type: ChannelCaller).

With a set-function we need a parameter, the new rotationvector, as input, so let's add that:

12. Make sure the "setRotation"-function is selected and click the "Add parameter" button in the parameters section.

The channeltype dialog pops up.

13. Select the type "Value Vector" and click on OK.

14. Name the parameter "New Rotation".

The "setRotation"-function now has a functionparameter:

Let's implement setRotation().

15. Drag the target of setRotation into the channelgraph.

16. In the interfaces control tab (bottom left corner) click open the IPrimitive tree.

The '+'-symbol in front of the setRotation()-function indicates there are function parameters available for this function.

17. Open the setRotation()-tree and drag the "newRotation"-parameter into the channelgraph:

18. Using the interfaces control tab, drag the "rotation"-member into the channelgraph aswell, and create a setVector-routine:

Make sure not to forget to link the "This"-pointer to the "rotation"-member channel.

There you have it... 3 get functions and the setRotation set-function:

RotatingPrimitive.cgr

With the member accessors added to the IPrimitive interface it's time to create the "RotatingPrimitive"-class and create the first override:

19. Create a new channelgroup "RotatingPrimitive"; 20. In de OO Editor, create the class "RotatingPrimitive" which implements the interface "IPrimitive";

21. In de memberpane of the OO Editor, select the "update"-function, rightclick and select "override":

The "update"-row will turn green.

22. Drag the update-target into the channelgraph and implement the override:

That's it... We've overridden the "update"-function for RotatingPrimitive.

CustomGeometry.cgr

And now for a specialization of the IPrimitive's "draw"-function:

23. Create a new channelgroup "CustomGeometry";

24. Create a new class called "CustomGeometry" which implements the" IPrimitive"-interface;

25. In de memberpane of the OO Editor, select the "draw"-function, rightclick and select "override".

26. Drag the "draw()"-functiontarget into the channelgraph and implement the draw routine for your custom geometry:

Start.cgr

29. Import the "start.cgr" from the previous tutorial and add the "update"-functioncall to the Class Instance List iterator graph:

30. Clear the Class Instance List entries and add the following:

  • Mascot: CustomGeometry, position(0,0,0), size(1,1,1)
  • Red spinning box: RotatingPrimitive, position(-2,0,0), size(0.5,0.5,0.5), color(1,0,0), type(box)
  • Blue sphere: Primitive, position(2,0,0), size(0.5,0.5,0.5,0.5), color(0,0,1), type(sphere)

Which should give you the following result:

Project files

002 - Overrides.zip

Categories: Tutorials | OO


Start3DScene - Quest3D

Start3DScene

Contents

  • 1 Start3DScene
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Full Screen
      • 1.3.2 Clear Screen
      • 1.3.3 Stop Project
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

Start3DScene

General

Prepare the 3D card for a rendering your 3D project.

Children

  1. Called Children - All Types Channel
    • Link your project channels here

Description

Before you can render anything to your screen, the 3D card needs to be prepared. This channel can prepare the 3D card and has some other useful functions that will come in handy when creating a project. This channel is usually set as the start channel in a project.

When using this channel, you will not need to use the ClearScreen, Command (with Begin Scene and End Scene) and Present. These are only needed if you want to have an advanced render loop setup.

In the properties window you can set the following properties:

Full Screen

Here you can set if the user should be asked for a screen resultion to run your project in, or you can set a fixed resolution for the project. Leave the checkbox unchecked if you don't want to have a full screen project. This function will only work when the project is published to stand alone executable or installer.

Clear Screen

You can have this channel clear the screen with a selected color. This is a recommended setting and is needed for most scenes. You can click on the color to change the color of the back ground.

Stop Project

You can use this function to quit your scene when a certain key is pressed. This is turned on by default, and is set to the Escape key.

CallChannel

When this channel is called, the configured functions are executed so that the 3D card is prepared correctly before rendering. Afterwards it will call its children from left to right.

Applications

Use this channel to start your project with to make sure the render loop is executed correctly.

Tips

Link a ChannelCaller channel as a child so that you can change the order of the channels called by this channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


StaticLOD - Quest3D

StaticLOD

Contents

  • 1 StaticLOD
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Call Channel

StaticLOD

General

Static Level of Detail

Children

  1. Position - Matrix
    • Position of LOD object. This position will be used to check the distance to the current camera. That distance is then used to get the right object to use from the envelope
  2. Levels - Envelope
    • Envelope with keys where to display what object. On the horizontal axis the distance from the object to the camera is used. Vertically a value from 0 to 1 is used with 1 being the last object linked to the Static LOD channel and 0 the first object.
  3. Objects - 3D Object
    • Objects with different levels of detail. First link the objects that have the most detail and end with the least detail. If you link multiple objects the Static LOD channel will look at the values from 0 to 1 on the vertical axis of the linked envelope channel to determine which object to show.

Description

Static LOD channel can be used to show a less detailed object when the LOD object is further away from the camera. This can give great speed increases since you can also switch from a skinned to a non skinned object for example. The main difference with the Dynamic LOD is that this version requires you to create all less complex objects yourself. This has a big advantage that it is faster and usable for almost any type of objects. Dynamic LOD objects often need to be very clean and just right to work. Static LOD is preferred over DLOD in almost any situation.

Easiest method to use this channel is to create multiple versions of your object link them all from complex to less complex and adjust the envelope to switch when you want to. You could create a system that uses different envelopes based on the computer speed or user setting.

Call Channel

Renders the object that is picked from the distance to the camera used in the envelope channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


StencilShadow - Quest3D

StencilShadow

Contents

  • 1 StencilShadow
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

StencilShadow

General

Render a realtime stencil shadow over your screen.

Children

  1. Volume Distance - Value
    • Value that determines how long the shadow volumes will be.
  2. Texture for volume - Texture
    • Link a texture that is renderd on the volume if you enable volume rendering.
  3. Light vectors - Value Vector
    • Direction the light is pointing in.
  • Shadow objects - SoftwareStencilShadowObject or FastShaderStencilShadowObject

Stencil shadow objects to render in the buffer

Description

This channel needs to be called after you render your scene and will render a shadow per pixel correct over your scene. It will do this using the stencil shadow technique. If you do not link the Volume distance child this volume will be calculated to be the maximum frustum size this is recommened. Link a vector to the light vectors link to create a shadow from that light point. Link a SoftwareStencilShadowObject or FastShaderStencilShadowObject to this channel to render the volumes. Call this channel after your objects are rendered but before using present. Objects will have self shadows they might look distorted. To fix this go to the Object Section and in the Surface Properties window set the Z Bias in the advanved menu to 1 of your object that has the distortion.

The created volumes can ask for a lot of fillrate of your 3d card. Make sure you link a low poly objects as shadow objects as possible. Good practice is to create a simple version of your object and use that for shadow.

Stencil shadows are not perfect. They often have problems with the object you are rendering and can be a real fillrate killer.

There is also the effect of objects that are lit from two sides (or using emissive) objects seem to have shadows that are incorrect. This is because volumes are created that are not able to detect collision objects on its path. Using single lights are black shadows can minimize this effect.

CallChannel

Calling this channel will draw the volumes in the stencil shadow and draw a square in the choosen color over the screen where the stincil buffer thinks there is shadow.

Applications

Create pixel perfect realtime shadows over your scene.

Tips

  • use as simple a shadow object as possible
  • use a ClearScreen channel after you render your first volume to clear the stencil buffer only and render a new volume this can create different shadows creating darker shadows where they meet.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Surface - Quest3D

Surface

Contents

  • 1 Surface
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Tips

Surface

General

Used by 3D Object to describe a section of the object.

Children

  1. ObjectData - 3D ObjectData
    • Object data to render when the surface is called.
  2. Materials - Material
    • Material to set when calling the surface before we render the objectdata.
  3. Textures - Texture
    • Texture to add on different levels of the objectdata.

Description

A surface contains all the settings for texture blending and alpha blending. It does not contain the texture mapping. The textures that are used for a surface are linked to the last link positions of the surface.

The first child of a surface contains the geometry for the surface. This includes vertices, normals, polygons and texture coordinates.

The material connected to the surface contains the blending values, diffuse color, emissive color and specular settings for a surface.

CallChannel

Calling this channel has no effect.

Tips

There are several channels available that can be used as an ObjectData examples of these are:

  • DynamicLOD (Level Of Detail)
  • ParticleObject
  • Primitive
  • SkinnedMesh

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Reference Manual/Editor/Object Section/Surface List - Quest3D

Reference Manual/Editor/Object Section/Surface List

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Surface List

Shows the surfaces that belong to the selected object.An object is build up in different sections. In Quest3D we call each section a surface. A surface has:

  • Material settings (color, emissive, specular)
  • Surface settings (z-buffer settings, transparency)
  • Texture settings (texture images, texture mapping, texture blending, etc..)
  • Texture Stages (mapping, color blending, ect ..)

If you want any of these settings to be different than another part of your object they have to be in separate surfaces.

This ball object is split up into two surfaces.

You can select a surface for editing by clicking a name from the surfaces that are listed. You can select more than one surface when you hold the CTRL or SHIFT key. The window also shows the number of polygons and the number of vertices of each surface.

You are also able to select a surface by clicking on the object itself in the Object 3D View window. If you move the mouse over the object you can see a bounding box around a surface. If you click the left mouse button a selection bounding box will appear around the surface. The listed surface in this window will also be selected.

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


Reference Manual/Editor/Object Section/Surface Properties - Quest3D

Reference Manual/Editor/Object Section/Surface Properties

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Contents

  • 1 Surface Properties
    • 1.1 General
    • 1.2 Easy Mode
    • 1.3 Texture blending
    • 1.4 Transparency
    • 1.5 Z-buffer control
    • 1.6 Advanced Mode
    • 1.7 Alpha Blending
    • 1.8 Z-buffer control
    • 1.9 Texture coordinates
    • 1.10 Reject Alpha Pixels

Surface Properties

General

In this window you are able to change the properties of surface(s). The window has an advanced mode and an easy mode. In the advanced version of the surface property window you have more control over some surface settings. You can switch between easy and advanced mode by pressing the "Easy.." and "Advanced.." buttons.

The easy surface properties controls

Easy Mode

The easy mode allows you to select the most common settings for surfaces.

Texture blending

The top dropdown list allows you to select the blending between the first and the second texture stage. The first texture stage is always multiplied with the lighting in this case. There are four options for blending between the first and the second stage:

  • Multiply - Multiplies the RGB values of the first texture with the second texture
  • Add - Adds the RGB values of the second stage to the first stage
  • Alpha Value - Fades between the two textures depending on the alpha value. You can modify the alpha value in the Material or Shader Properties window.
  • Texture Alpha Image - The blending depends on the alpha value of each pixel of the texture of the last texture stage.

This drop-down list is only enabled when more that one texture stage is present on the selected surface.

Transparency

The lower dropdown list lets you blend the surface into the background, resulting in a transparency effect. It has the same options as the texture blending dropdown list described above with an additional option to turn blending off.

Z-buffer control

At the bottom you see two check boxes to control the z-buffering of the object. The z-buffer is a method for determining if objects are in front or behind objects that where already rendered. If the check z-buffer option is not checked the object is rendered without taking the z-buffer into account.

If you disable z-buffer writing the rendered object will not store it's z-values into the z-buffer. This means that objects that are rendered after the object always draw themselves over the object.

Advanced Mode

Alpha Blending

The background alpha blending settings can be configured at the top of the window. There are two parameters that define how much of the source pixel (the object) and the destination pixel (the background) is taken into account.

In the following listing R,G,B and A are the red, green, blue and alpha component of a pixel. The s and d stand for the source pixel and destination pixel.

  • ZERO - Blend factor is (0, 0, 0, 0).
  • ONE - Blend factor is (1, 1, 1, 1).
  • SRCCOLOR - Blend factor is (Rs, Gs, Bs, As).
  • INVSRCCOLOR - Blend factor is (1–Rs, 1–Gs, 1–Bs, 1–As).
  • SRCALPHA - Blend factor is (As, As, As, As).
  • INVSRCALPHA - Blend factor is (1–As, 1–As, 1–As, 1–As).
  • DESTALPHA - Blend factor is (Ad, Ad, Ad, Ad).
  • INVDESTALPHA - Blend factor is (1–Ad, 1–Ad, 1–Ad, 1–Ad).
  • DESTCOLOR - Blend factor is (Rd, Gd, Bd, Ad).
  • INVDESTCOLOR - Blend factor is (1–Rd, 1–Gd, 1–Bd, 1–Ad).
  • SRCALPHASAT - Blend factor is (f, f, f, 1); f = min(As, 1–Ad).

Z-buffer control

The z-buffer controls are the same as in easy mode but have an additional setting: the z-bias. The z-bias allows you to offset the z-value for an surface. This is useful if the z-buffer is not accurate enough to determine which surface should be rendered on top. The bias can be any integer from 0 to 16 inclusive.

Texture coordinates

UV Sets are used to store the UV texture coordinates of a 3d object. Often 3d objects have two sets of UV coordinates. With the uv sets settings you can change it into none, 1 or 2 UV sets. Using less texture coordinates will result in increased performance and smaller file size. The drawback is that you can only use reflective mapping if you have no coordinate sets and you can use only one UV mapping with one coordinate set.

You can copy the entire UV texture coordinates set from set 1 to set 2 or from set 2 to set 1 by clicking on the available buttons. Make sure there are 2 sets available.

Reject Alpha Pixels

With this setting you are able to make objects transparent on itself. When an object has polygons with a transparent texture applied to it, some other parts of the object might not be seen through the transparency. Click on the check and set a number of pixel to tweak the setting. The following picture will show the difference:

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


SysInfo - Quest3D

SysInfo

Contents

  • 1 SysInfo
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Get Available Texture Memory
      • 1.3.2 Get Viewport Width
      • 1.3.3 Get Viewport Height
      • 1.3.4 Get Windowed Mode
      • 1.3.5 Get Cubetexture Support
      • 1.3.6 Get Non Power2 Texture Support
      • 1.3.7 Get Volumetexture Support
      • 1.3.8 Get Max Texture Width
      • 1.3.9 Get Max Simultaneous Textures
      • 1.3.10 Get Max Active Lights
      • 1.3.11 Get Adapter Count
      • 1.3.12 Get Adapter Mode Count
      • 1.3.13 Get Adapter Mode Width From Index
      • 1.3.14 Get Adapter Mode Height From Index
      • 1.3.15 Get Adapter Mode BPP From Index
      • 1.3.16 Get Adapter Mode Refresh Rate From Index
      • 1.3.17 Get Total Vertex Count of last frame (disabled)
      • 1.3.18 Get Total Polygon Count of last frame (disabled)
      • 1.3.19 Get 3D Device Available
      • 1.3.20 Get Bumpmap support
      • 1.3.21 Get Pixel Shader Support
      • 1.3.22 Get Frame Rate Per Second (FPS)
      • 1.3.23 Get Display Width
      • 1.3.24 Display Height
      • 1.3.25 Get original texture width
      • 1.3.26 Get original texture heigth
      • 1.3.27 Get Shader Model
      • 1.3.28 Get render Traget Width
      • 1.3.29 Get render Traget Height
      • 1.3.30 Get High Speed Elapsed Time
      • 1.3.31 Get Logical Width of Text
      • 1.3.32 Get Loogical Height of text
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

SysInfo

General

Retrieve information about the 3D rendering system.

Children

  1. Index values - Value
    • Used as index value for a number of commands.

Description

This channel can tell you information about the 3D rendering system. This channel has a Value base class. This means that all the info you retrieve is a value. The following options are available in the dialog:

Get Available Texture Memory

Retrieves the available texture space in the 3D card. The available space is given in bytes.

Get Viewport Width

Get the width of the 3D display in pixels.

Get Viewport Height

Get the height of the 3D display in pixels.

Get Windowed Mode

Zero if the 3D display is full screen, one if the 3D display is a window

Get Cubetexture Support

Zero if the 3d card does not support cube textures, one if the 3D card supports cube textures.

Get Non Power2 Texture Support

Zero if the 3d card does not support textures that have a width or height that is not a power of 2. The value is 1.0 otherwise.

Get Volumetexture Support

Zero or one depending on the support for volumetric textures.

Get Max Texture Width

The maximum texture size.

Get Max Simultaneous Textures

The number of texture stages that are supported by the 3D card.

Get Max Active Lights

The maximum number of lights you can use at once.

Get Adapter Count

The number of 3D cards in the computer.

Get Adapter Mode Count

The number of modes for an 3D card. The first value linked to this channel determines from which 3D card the mode count is retrieved.

Get Adapter Mode Width From Index

This option retrieves the screen width of a screen mode. The first child determines the adapter. The second child is the index of the mode.

Get Adapter Mode Height From Index

This option retrieves the screen height of a screen mode. The first child determines the adapter. The second child is the index of the mode.

Get Adapter Mode BPP From Index

This option retrieves the screen depth of a screen mode (in bits per pixel). The first child determines the adapter. The second child is the index of the mode.

Get Adapter Mode Refresh Rate From Index

This option retrieves the screen refresh frequency of a screen mode (in Hertz). The first child determines the adapter. The second child is the index of the mode.

Get Total Vertex Count of last frame (disabled)

The number of vertices that where rendered for the last frame. This option no longer works, it proved to be inacurate and not usable

Get Total Polygon Count of last frame (disabled)

The number of polygons that where rendered for the last frame. This option no longer works, it proved to be inacurate and not usable

Get 3D Device Available

This will return one (1) when a graphics device is available that supports basic 3D functions.

Get Bumpmap support

The channel will be set to one if the current selected device supports bumpmapped textures.

Get Pixel Shader Support

Determine if the 3d device supports harware pixel shader.

Get Frame Rate Per Second (FPS)

Get the current frame rate per second.

Get Display Width

Retreive the width in pixels of the current windows desktop.

Display Height

Retrieve the height in pixels of the current windows desktop.

Get original texture width

Returns the width of the texture in pixels.

Get original texture heigth

Returns the height of the texture in pixels.

Get Shader Model

Returns you the sahader model of the used videocard.

Get render Traget Width

Missing Documentation.
No Comments

Get render Traget Height

Missing Documentation.
No Comments

Get High Speed Elapsed Time

Missing Documentation.
No Comments

Get Logical Width of Text

Retuns the pixels Width of the text in the Text channel based on the used win32 font

Get Loogical Height of text

Retuns the pixels Height of the text in the Text channel based on the used win32 font

CallChannel

Calling this channel has no effect.

Applications

Checking if features are supported, screen resolution, full screen or windowed, enumerating display modes, displaying polygon count etc..

Tips

To get the frame rate of the last frame you can use the TickCount. This value represents the time it took to render the last frame in 1/25th seconds. You can calculate this back to the frame rate with the following formula:

frame rate = 25/tickcount

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | Incomplete


System Command - Quest3D

System Command

Contents

  • 1 System Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Sleep number of milliseconds (Value)
      • 1.3.2 Quit the application
      • 1.3.3 Set Mouse Position
      • 1.3.4 Delete datafile
    • 1.4 CallChannel

System Command

General

Execute a command on the current PC

Children

  1. Depends on selected command - All Types Channel
    • The type of channel that needs to be linked depends on the chosen command. Any type can be linked, but only when the correct children are linked, the command can be executed correctly.

Description

Through the interface you can change the command that will be executed every time the channel is called:

Sleep number of milliseconds (Value)

When the channel is called it will "Sleep" a number of milliseconds. This number is configured by linking a Value channel. During the "Sleep" period, the project will stop functioning for the configured number of milliseconds, resulting in more processor time for other applications.

Quit the application

When called, the current running application is quit. In your published project, this means your project is closed. You can use this function, for example, after the user pressed the ESC key.

Set Mouse Position

When called, the mouse cursor will be set to the values that are linked to the system command channel. The first value is the X in screen pixels the second is the Y.

Delete datafile

Missing Documentation.
No Comments

CallChannel

If the channel is called, the configured command is executed.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Commands and Settings | Incomplete


Reference Manual/Editor/General/Tab Window - Quest3D

Reference Manual/Editor/General/Tab Window

< Reference Manual | Editor | General
Jump to: navigation, search

Contents

  • 1 Tab Window
    • 1.1 General
    • 1.2 Description
    • 1.3 Remarks

Tab Window

General

User definable TAB window.

Description

By pressing the right mouse button on the TAB window, TAB's can be added, removed and renamed in the TAB window.

A TAB window always has a "target window". This target window will be set with the selected window. If you add a new TAB window somewhere in your interface you will need to select a new target by selecting "Select Target" from the menu that is called by clicking the right mouse button. You will then get a notification window that you should click on a target. First click OK, and the next time you click in a window that window will be set as the target for the TAB control.

Remarks

Very useful for speeding up design time. Use the "Save All Settings" in the Options menu to save the current layout of all windows.

One Level Up General

Back to - Editor

Back to Main Index

Category: Editor


Talk:Exporting:History - Quest3D

Talk:Exporting:History

test


Reference Manual/Editor/Channels Section/Template List - Quest3D

Reference Manual/Editor/Channels Section/Template List

< Reference Manual | Editor | Channels Section
Jump to: navigation, search

Contents

  • 1 Template List
    • 1.1 General
    • 1.2 Remarks
    • 1.3 Tips

Template List

General

A template is a pre-designed set of channels (or just one channel) that are already linked and configured correctly for instant use.

You can "drag and drop" a template into the Channel Graph window with the mouse. At the position of the mouse the template will be inserted into your current project.

Use the + sign in front of the folder to unfold the templates (and sub-folders) that are in a folder.

Remarks

  • Some templates are documented with text items that explain how to link it into your project and how to use it. You can delete that comment at any time.
  • Because of the diversity of the templates we are unable to add help to this screen for the templates. Please see the templates itself and/or the tutorials.

Tips

  • If you are unable to find a suitable channel, please also look in the "Channel List" window. All individual channels are listed there.
  • In your Quest3D installation directory you will find a "Template" directory. This directory will be scanned for templates and those are displayed in this window. If you like you can re-order and rename the folders and files any way you would like. Please remember to rename/move/copy the .igr together with the .cgr file.
  • You can quickly add multiple copies of a template to the channel graph, by selecting the template in the list, move the mouse to a spot in the channel graph and press the space bar. The template will be dropped at the mouse pointer. As long the template is selected in the list you can added a copy in the channel graph.

One Level Up Channels Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Channels Section


Template:Depreciated - Quest3D

Template:Depreciated

WARNING: This item is deprecated

This items is probably included for backwards compatibility.

Category: Depreciated


Template:Incomplete - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Template:Incomplete

From Quest3D

Jump to: navigation, search
Missing Documentation.
No Comments

Category: Incomplete


Reference Manual/Getting Started/Basics/Templates - Quest3D

Reference Manual/Getting Started/Basics/Templates

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Templates
    • 1.1 General
    • 1.2 Find a template
    • 1.3 Use a template
    • 1.4 Comments
    • 1.5 Designing Your Own
    • 1.6 Distribution

Templates

General

A template is a collection of channels already linked and configured ready for use in your project. Quest3D is shipped with a number of templates that allow you to create your production much faster and easier. Some templates can be used directly into your project others can be used as an example.

Find a template

The Template List window holds a large number of "Folders" in a tree. These folders can hold one or more template or another folder. All templates are categorized and after some usage you will get used to the categories used. When you click on the (+) sign in front of a folder, this folder will expand showing its content. The (-) sign will collapse the folder again.

Use a template

From the Template List window you can select a template and drag it into the Channel Graph. When the mouse button is released the template is copied into the channel graph. The top channel from the template is placed directly under the mouse.

Almost all channels designed and that are included with Quest3D have one top channel and the rest of the linked channels are placed under that top channel. When adding a template make sure there is enough room for the template.

When you've placed the template in your project and you would like to move it, hold the SHIFT key and press the top channel of the template. The whole tree under that channel will be selected and you can now move the template to the desired place.

Comments

Some templates have comment to aid you in using the template in your project. You can delete these comments any time you like although it is a good idea to add comment to your project for later reference.

Designing Your Own

You can easily add your own templates. Create the template and save it in the "Template" directory that is located in the Quest3D Installation Directory. If you restart Quest3D the template will appear in the tree. You are also free to create folders in the "Template" directory. These folders will also appear in the list.

Before saving the template to disk please make sure the top channel is placed in the middle of the channel graph window (where the cross intersects). This will make sure the template is placed correctly when it is used.

Distribution

When you would like to distribute the template make sure you include the ".igr" file with the ".cgr" file. Only these two files together will make sure the template can be used correctly. You are free to rename the files, as long as they have the same file name.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


Text - Quest3D

Text

Contents

  • 1 Text
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Remarks
    • 1.5 Applications

Text

General

Stores a text (a string)

Description

This channel can store any text. In most programming languages called strings. This channel is the base channel for many text operating channels.

The current version also supports UNICODE. This means you are able to type in Arabic or Asian language characters. To use this feature please select the "Use Unicode" option.

In the channel interface you can change the text:

You can also paste any non formatted text into the text box.

CallChannel

Has no effect

Remarks

A text channel has a maximum of 630,000 characters.

Applications

  • You can use the Textout to show 2D text on the screen
  • You can use 3DText to generate 3D text based on a font
  • Use 3DTextFromTexture to generate a flat 3D text based on a texture
  • There is a TextOperator that will allow you to perform some operations on this channel like changing a value into a text so it can be displayed.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


TextFilter - Quest3D

TextFilter

Contents

  • 1 TextFilter
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

TextFilter

General

Filter a piece of text from another text.

Children

  1. Input Text - Text
    • Source text to filter
  2. Row - Value
    • Row number to filter using the configured separator
  3. Column - Value
    • Column number to filter using the configured separator

Description

With this channel you are able to filter out a piece of text from a larger set of characters. The channel can be used to retrieve data from a comma separated file, XML or HTML files.

In the dialog you are able to configure the way the source text should be filtered:

With the "Row Separator" drop down list you are able to select the separator character(s) that separate a row in the source text. If "Other:" is selected in the drop down list, you are able to use the text box to enter your own characters.

The "Columns Separator" setting works like the "Row Separator" but will configure the character use for seperating rows in the source text.

The "Field prefix and suffix" text boxes can be used to configure what characters should be stripped from a field. Field might start with " ' < characters.

The "Row number" will determine row part from the source text will be filtered. When a "Row" child is linked, this setting is ignored. The "Prev" and "Next" buttons will allow you to go to the next or previous part. The "Column number" will work the same, but for the selected column.

In the "Result" part you will the actual results. This will allow you to quickly reconfigure the filter settings and show the end result.

The "Source" part will show the text in the first linked child. This text is used to filter.

CallChannel

Will have no effect

Applications

You are able to use this channel as XML parser by entering the field tags in the "Field prefix and suffix" properties and the row tags in the "Row separator" properties.

The same can be done with HTML.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables | Operators


TextOperator - Quest3D

TextOperator

Contents

  • 1 TextOperator
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Text Replicate
      • 1.3.2 Merge Text
      • 1.3.3 Value to Text
      • 1.3.4 Value (Integer) to Text
      • 1.3.5 Text Lowercase
      • 1.3.6 Text Uppercase
      • 1.3.7 Get SubText
      • 1.3.8 Get Subtext Cropped
      • 1.3.9 Convert group buffer to text
      • 1.3.10 Time/date to string
      • 1.3.11 Replace text (text, text, text)
      • 1.3.12 Convert group buffer to text
      • 1.3.13 Get Text Data Directory
      • 1.3.14 Text to Buffer
      • 1.3.15 Get Current Group Pool Name
      • 1.3.16 Get channel name of child
    • 1.4 Remarks
    • 1.5 Tips

TextOperator

General

Operations that have Text as output.

Children

  1. Channels - All Types Channel
    • Children needed for the operation (see dialog)

Description

When you use this channel as a text its content is constructed by an operator. Each operator needs it's own children.

Text Replicate

The content of the channel is the same as the first child.

Merge Text

Merges the fist child with the second child. They both must be of the type.

Value to Text

Converts a Value to a text with a decimal point.

Value (Integer) to Text

Converts a Value to a text without a decimal point.

Text Lowercase

Converts the first child to lowercase.

Text Uppercase

Converts the first child to uppercase.

Get SubText

You can retrieve a text from a text. Link the source text as the first child, a value as the second child and set this to the character position you would like to start. Additionally add a third child (second value) that represents the number of characters to get.

Get Subtext Cropped

You can retrieve a text from a text. Link the source text as the first child, a value as the second child and set this to the character position you would like to start. Additionally add a third child (second value) that represents the number of characters to get.

Convert group buffer to text

Then a Group Loader channel is linked as the first child and this channel is called, the content of the group buffer will be copied into this channel as text. You can use this operation to read out a HTML file downloaded from the Internet or a text file loaded from disk.

Time/date to string

The text of this channel will be set to the current time or date. When a Text channel is linked as a child, the text of that child will be used as the format for the time and. You are able to use the following to format the time:

  • %a - Abbreviated weekday name
  • %A - Full weekday name
  • %b - Abbreviated month name
  • %B - Full month name
  • %c - Date and time representation appropriate for locale
  • %d - Day of month as decimal number (01 – 31)
  • %H - Hour in 24-hour format (00 – 23)
  • %I - Hour in 12-hour format (01 – 12)
  • %j - Day of year as decimal number (001 – 366)
  • %m - Month as decimal number (01 – 12)
  • %M - Minute as decimal number (00 – 59)
  • %p - Current locale’s A.M./P.M. indicator for 12-hour clock
  • %S - Second as decimal number (00 – 59)
  • %U - Week of year as decimal number, with Sunday as first day of week (00 – 53)
  • %w - Weekday as decimal number (0 – 6; Sunday is 0)
  • %W - Week of year as decimal number, with Monday as first day of week (00 – 53)
  • %x - Date representation for current locale
  • %X - Time representation for current locale
  • %y - Year without century, as decimal number (00 – 99)
  • %Y - Year with century, as decimal number
  • %z, %Z - Time-zone name or abbreviation; no characters if time zone is unknown
  • %% - Percent sign

If no child is linked, %c will be used.

Replace text (text, text, text)

Replace text will replace each occurance of the second childs text in the first childs text with the text of the third child. So for example:

Text 1 : This is a test text for testing purpose Text 2 : test Text 3 : new

This will result in: This is a new text for newing purpose

Convert group buffer to text

A Buffer channel can be linked and all information that is in the buffer will be converted into text. Please note that binary data will be converted but can come out unreadable.

Get Text Data Directory

New in 3.5

This operator returns you the path of the current directory where the cache data is stored.

Text to Buffer

New in 3.5

This operator converts the text linked to the first child and stores it in the buffer linked to the second child.

Get Current Group Pool Name

New in 3.5

This operator returns you the name of the pool where you call this channel.

Get channel name of child

New in 3.5

This operator returns you the channel name of the linked child.

Remarks

You can link any type of child to this channel. You must link the correct types depending on the operator type.

Tips

  • To copy a Text or to set a Text you can use the Set Text

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Operators


Textout - Quest3D

Textout

Contents

  • 1 Textout
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

Textout

General

Displays a 2D text in the 3D screen.

Children

  1. Pos - Value Vector
    • Position in 2D of this text. Only x and y of the vector are used and the value is in screen pixels.
  2. Text - Text
    • Text to show in 2D.
  3. Win32 Font - Win32 Font
    • Font to use for the text.
  4. End rectangle - Value Vector
    • End rectangle to use for the text.
  5. Out: The height of the text - Value
    • Outputs the height of the text in pixels.

Description

This channel will display a 2D text in the 3D screen. This text can be moved over the screen and all cameras in the scene are ignored.

The first child is used to set the position of the font. Only the first two children of the Value Vector channel that is linked to "Pos" are used for the X and Y position on the screen in pixels.

The text that is displayed is linked to the "Text" child link position. Please refrain from using too long texts because this could slow down the performance of you applications.

If you want to change the font of the text you must link a Win32 Font channel to the fourth child link position. You can use that channel to select a font that should be used to display the text.

If you wish to use the text out properties in the text out property dialog you have to link an end rectangle Value Vector to the fifth child position. The X and Y values of this vector have to be the starting position of the text plus the width and height of the rectangle you wish to display the text in. For example if the position of the text is (50, 100) if the end rectangle is (100, 150) you have a rectangle that has 50 width and 50 height.

The property dialog of Textout has the following options:

  • Center text - will center the text in the middle of the rectangle
  • Read right to left - this option is for use with Unicode text that needs a different order of reading.
  • Use word break - this option will break words if the word does not fit in the rectangle
  • Vertical center - this option is only for use with unicode text that needs vertical centering

The last child link outputs the height of the text in pixels. Please note that the rectangle limits the maximum height this child will have.

CallChannel

When this channel is called it will display the given text at the given position with the given font style. Keep calling this channel every frame to make sure it is displayed.

Remarks

This channel is not suitable for positioning text when you are working with different resultions. The position is in screen pixels resulting in an different relative position when the resolution changes.

Applications

You should not use this channel too often. Best used for debugging values and text. A good application is a (fps) counter for examlpe.

Tips

  • If you want to display text in 3D you are better of using 3DTextFromTexture this is faster and more flexible.
  • 3DTextFromTexture should be used if you want to display a font in real 3D. The 3DText channel will convert a font into 3D polygons.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering


Texture - Quest3D

Texture

Contents

  • 1 Texture
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Mip map count
      • 1.3.2 Image width and height
      • 1.3.3 Bump Mapping
      • 1.3.4 Alpha Blending
      • 1.3.5 Load texture from file
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Texture

General

Texture used on a 3d object.

Children

  1. Alpha Texture - Texture
    • Used to create an alpha channel in the current texture.
  2. Bumpmap Scale - Value
    • Bumpmap scale if texture is a bumpmap
  3. Load texture from file - Buffer
    • Buffer channel that can hold a texture.

Description

This texture channel can load a picture from your hard disk and use it as a texture. When you save the channel group the picture is saved within the CGR in the original format. This means that a *.JPG keeps its small size.

The dialog shows the picture (scaled to fit the window) and allows you to configure the texture.

Mip map count

Mip mapping is a method to reduce distortion due to the scaling of a texture. You can specify the number of mip levels. A value of 0 results in the maximum number of mip map levels. Values of 2 and up specify multiple mip levels. Mip mapping works by calculating interpolated scaled down versions of the texture. Each level adds a version of the texture that is half the size of the previous texture. More mip levels result in smoother images. Less mip levels result in sharper images. In most cases a value of 0 (maximum number of mip levels) gives the desired effect. More mip levels require more graphics memory.

Image width and height

If you want to force the image to a certain height you can type in the width and height. If you specify –1 for the sizes then the size is calculated automatically. In most cases specifying –1 results in the original image size. If the picture is too big for the 3D card it is scaled down automatically. We strongly encourage leaving the picture size at –1. Scaling a picture down results in unnecessary delay at initialization.

Bump Mapping

If you want to use a grayscale height field image for environmental bump mapping you can check the ‘texture is bump map’ box. If this box is checked the grayscale image is converted to dUdV values automatically.

To use the texture for bump mapping you need to place the color texture on the first stage, the bump map texture on the second stage (with ‘texture is bump map’ checked) and the environmental map on the third stage). You need to set the blend mode of the middle stage to BUMPENVMAP.

In the object Section of Quest3D you are able to manipulate the texture mapping. Please read Object Section for more information.

The second child of this channel wil allow you to change the "bumpiness" of the texture. The higher the value, the more bumpiness will be visible. Zero for no bump mapping.

Alpha Blending

Some alpha blending modes and texture blend modes need the alpha channel of the texture. You can incorporate the alpha channel in a 32 bit TGA or you can link a second texture channel to the channel. Quest3D automatically converts the child of a texture to grayscale and uses it as the alpha channel.

Load texture from file

If you want to load another texture into the channel without the use of the editor you are able to use the Group Loader with a Buffer channel to load a valid texture. Link the Buffer channel to the third child link position to load it as a texture.

CallChannel

Will have no effect

Remarks

  • If you use a alpha channel that is a separate texture the alpha values are only stored in the top mip level. This means that lower mip levels do not have an alpha image. If you want to use alpha channels in combination with mip mapping you need to use an 32 bit image with an alpha channel.
  • There is a bug in DirectX 8 that causes Quest3D to crash when you use a JPG image with a smaller width than 8 pixels
  • Please note: The actual texture is not needed anymore after loading! The texture is copied into the channel. You will not need to distribute the original picture with your project!

NOTE: On some older GeForce drivers using texture compression on textures that are larger then 2048 horizontal or vertical will cause a driver error and a computer reset.

Applications

Textures ure used to color a 3d model. They can also define transparency or the 'bumpyness' of a surface.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Texturing | Objects and Rendering


Reference Manual/Editor/Object Section/Texture List - Quest3D

Reference Manual/Editor/Object Section/Texture List

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Contents

  • 1 Texture List
    • 1.1 General
    • 1.2 Loading a texture
    • 1.3 Selecting the tumbnail picture size
    • 1.4 Texture Properties
    • 1.5 Select a texture stage
    • 1.6 Apply a texture
    • 1.7 Alpha Textures
    • 1.8 Texture Information

Texture List

General

This window shows a thumbnail of all the pictures in your current scene, or in a single channel group.

Loading a texture

Before you load a texture you must first select the channel group that you want to load the texture into. When the texture is loaded, a channel will be placed in the selected channel group. Recommended is to make sure you load the texture in the channel group you are using the texture in, but it is not needed.

You can add a texture by clicking the empty grey area or by clicking the ’Load..’ button. You can make textures from other groups available in this window by making a public caller for them in the current group. Make sure you never load the same texture twice. Each texture costs some of the memory of the 3D accelerator. When the accelerator runs out of memory the system memory is used, decreasing performance.

If you load a texture it gets automatically scaled to a format that is accepted by the 3D accelerator. It is better to create the texture with compatible sizes in the firs place. Most 3D accelerators accept image with sizes that are a power 2. Try to use textures that are not too large. Big textures (1024x1024) can result in an extreme performance hit.

Selecting the tumbnail picture size

You can select how big the thumbnail pictures are with the combo box that has the items "Small Medium Large". Small will give a 32x32 picture. Medium will be 64x64 and large is 128x128

Texture Properties

You can on a texture entry in the list and choose "Properties" from the context menu. You can then edit the texture properties of the channel itself. For more information see Texture.

Select a texture stage

You can use the combo box to select the stage on which you want to operate. The remove and apply texture operations depend on this setting.

Apply a texture

You will need to select an object and a surface first before you click on the texture from the list you want to apply. Also make sure the correct stage is selected. If you selected multiple surfaces the texture is applied to the selected stage on all selected surfaces. To clear a texture you can press the ‘Remove from stage’ button.

Alpha Textures

You can also add an alpha channel to a texture. You can do this through the properties of the texture by using the on a texture and selecting the "Properties" entry from the context menu. You can load a separate image file if your original image does not have a alpha channel. An alpha channel is an extra image with a value of 0 to 255 for each pixel. If an image is 32bits (like DDS and TGA files) there are 24 bits for the color and 8 bits for the alpha channel. You can use this channel to achieve all sorts of effects. The most important one is transparency. With an alpha image you can specify how transparent each pixel of the texture is. How the alpha channel is used depends on the blending settings Texture Properties of the surface and the texture stages.

If you want your image to have an alpha channel you have two options:

  • Create a DDS or TGA image that has an alpha channel.
  • Create a separate image to define the alpha channel.

The good thing about creating a separate alpha channel is that you can compress both images with JPEG. If you do not need a small file size it easier to create an alpha channel within the image.

For faster project loading DDS with an alpha image or mipmap stages ready is the preferable format.

Texture Information

If you move the mouse over a texture, a tooltip will show some details on the texture, like the name of the channel, the size of the texture (converted to real-time 3D values) and the amount of memory it will take when loaded into the 3D card memory.

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


Reference Manual/Editor/Object Section/Texture Properties - Quest3D

Reference Manual/Editor/Object Section/Texture Properties

< Reference Manual | Editor | Object Section
Jump to: navigation, search

Contents

  • 1 Texture Properties
    • 1.1 General
    • 1.2 Stage Selection
    • 1.3 Image Information
    • 1.4 Mapping
    • 1.5 Camera space 2D texture mappings
    • 1.6 Camera space 3D texture mapping
    • 1.7 World space 3D texture mapping
    • 1.8 Color and Alpha Blending
      • 1.8.1 Arguments
      • 1.8.2 Operators

Texture Properties

General

In this window you are able to change a wide range of texture properties. The window is devided in a few parts.

Stage Selection

With the tabs in the top of the window you are able to change the texture stage. When changing the properties, the properties will be changed for the stage selected here.

A stage is a sort of texture layer. Most 3D accelerators support only 2 stages. Modern 3D accelerators support up to 4 stages. In Quest3D you can use up to 8 stages, but again, not all hardware will support this.

Image Information

Under the stage selection tab control you can see the name of the texture and the name of the alpha image. Alpha information can be added through a separate texture or can be stored in a 32-bit TGA or DDS texture.

Mapping

Here you can select how the texture is mapped on the surface(s). The drop down list at the top allows you to select a coordinate set for the mapping. There are three UV coordinate sets available. All the other coordinate sets are calculated by the 3D card.

Camera space 2D texture mappings

  • Reflectionmap (CamNormal) - this is a reflection method that uses the normal of the vertex to find the correct texture coordinates.
  • Reflectionmap (CamPos) - is a reflection method that uses the position of the normal to find the correct texture coordinates.
  • Reflectionmap (CamReflvec) - this is a reflection method that uses the vector halfway between the camera direction and the vertex normal.
  • Projection - This projects the texture from the camera so it fills the entire screen.

Camera space 3D texture mapping

  • Cube map reflection - This mapping looks up the texel in the cube map using the vector halfway between the camera viewing direction and the vertex normal.

World space 3D texture mapping

  • Cube map normal - This mapping looks up the texel in the cube map where the normal of the vertex is pointing to.

In short, use Reflectionmap (CamReflvec) for spherical environment maps. Use Projection for 2d effect such as blur and refracted reflections. Use Cube map reflection if you have a cube map as reflection and use Cube map normal if you have your lighting in a cube map.

In the middle you see four boxes to scale and move the UV mapping. You can also scale and move the mapping by holding the mouse button down on one of the two buttons and moving the mouse. The ‘Mouse speed’ slider controls how fast you move the coordinates.

Below the mouse speed slider you can select how the texture should repeat if the coordinates are beyond the limits of the picture. You can choose the image to repeat the edge colors, repeat tiled and repeat mirrored.

You can use the U and V wrap check boxes to fix problems with some types of mapping. If you map a texture around a cylinder the texture does not continue at the edge of the texture. A clearly visible seam will appear. By turning on wrapping the texture does continue. You can turn on wrapping in the U and V directions.

The drop down list at the shows the mapping type for the texture. You can select a planar x, planar y, planar z, cubic, cylindrical and spherical mapping. An object that is imported often has its predefined UV mapping. In this case you should not use these settings.

  • Planar X - stamps the texture on the object from the x direction
  • Planar Y - stamps the texture on the object from the y direction
  • Planar Z - stamps the texture on the object from the z direction
  • Cubic – chooses a planar mapping based on the direction of each polygon
  • Spherical – maps by looking at the xyz direction of the normal of each vertex.
  • Cylindrical – maps the surface by looking at the xz direction of the normal of each vertex.

Color and Alpha Blending

These six drop down lists select the blending of colors and the blending of the alpha channel of the selected stage.

The blending is defined by a parameter, an operation and a second parameter. The example in the picture has the diffuse color as first parameter, the texture as second parameter and modulate (multiply) as operator. In this case the color of this stage will be:

Diffuse color*texture color The following text is taken from the Microsoft DirectX 8.0 SDK manual and describes all parameters and operators:

Arguments

Both "Arg1" and "Arg2" can be one of the following selections:

  • CURRENT - The texture argument is the result of the previous blending stage. In the first texture stage (stage 0), this argument is equivalent to DIFFUSE. If the previous blending stage uses a bump-map texture (the BUMPENVMAP operation), the system chooses the texture from the stage before the bump-map texture. If s represents the current texture stage and s – 1 contains a bump-map texture, this argument becomes the result output by texture stage s – 2. Permissions are read/write.
  • DIFFUSE - The texture argument is the diffuse color interpolated from vertex components during Gouraud shading. If the vertex does not contain a diffuse color, the default color is 0xFFFFFFFF. Permissions are read-only.
  • D3DTA_SELECTMASK - Mask value for all arguments; not used when setting texture arguments.
  • D3DTA_SPECULAR - The texture argument is the specular color interpolated from vertex components during Gouraud shading. If the vertex does not contain a specular color, the default color is 0xFFFFFFFF. Permissions are read only.
  • TEMP - The texture argument is a temporary register color for read or write. TEMP is supported if the D3DPMISCCAPS_TSSARGTEMP device capability is present. The default value for the register is (0.0, 0.0, 0.0, 0.0). Permissions are read/write.
  • TEXTURE - The texture argument is the texture color for this texture stage. Permissions are read-only.
  • TFACTOR - The texture argument is the texture factor that is linked to the surface.

Operators

  • DISABLE - Disables output from this texture stage and all stages with a higher index. To disable texture mapping, set this as the color operation for the first texture stage (stage 0). Alpha operations cannot be disabled when color operations are enabled. Setting the alpha operation to DISABLE when color blending is enabled causes undefined behavior.
  • SELECTARG1 - Use this texture stage's first color or alpha argument, unmodified, as the output. This operation affects the color argument when used with the COLOROP texture-stage state, and the alpha argument when used with ALPHAOP.
  • SELECTARG2 - Use this texture stage's second color or alpha argument, unmodified, as the output. This operation affects the color argument when used with the COLOROP texture stage state, and the alpha argument when used with ALPHAOP.
  • D3DTOP_MODULATE - Multiply the components of the arguments.
  • D3DTOP_MODULATE2X - Multiply the components of the arguments, and shift the products to the left 1 bit (effectively multiplying them by 2) for brightening.
  • D3DTOP_MODULATE4X - Multiply the components of the arguments, and shift the products to the left 2 bits (effectively multiplying them by 4) for brightening.
  • ADD - Add the components of the arguments.
  • ADDSIGNED - Add the components of the arguments with a –0.5 bias, making the effective range of values from –0.5 through 0.5.
  • ADDSIGNED2X - Add the components of the arguments with a –0.5 bias, and shift the products to the left 1 bit.
  • SUBTRACT - Subtract the components of the second argument from those of the first argument.
  • ADDSMOOTH - Add the first and second arguments; then subtract their product from the sum.

  • BLENDDIFFUSEALPHA,BLENDTEXTUREALPHA,BLENDFACTORALPHA, and BLENDCURRENTALPHA - Linearly blend this texture stage, using the interpolated alpha from each vertex (BLENDDIFFUSEALPHA), alpha from this stage's texture (BLENDTEXTUREALPHA), a scalar alpha (BLENDFACTORALPHA) set with the TEXTUREFACTOR render state, or the alpha taken from the previous texture stage (BLENDCURRENTALPHA).
  • BLENDTEXTUREALPHAPM - Linearly blend a texture stage that uses a premultiplied alpha.

  • PREMODULATE - Modulate this texture stage with the next texture stage.
  • MODULATEALPHA_ADDCOLOR - Modulate the color of the second argument, using the alpha of the first argument; then add the result to argument one. This operation is supported only for color operations (COLOROP).
  • MODULATECOLOR_ADDALPHA - Modulate the arguments; then add the alpha of the first argument. This operation is supported only for color operations (COLOROP).
  • MODULATEINVALPHA_ADDCOLOR - Similar to MODULATEALPHA_ADDCOLOR, but use the inverse of the alpha of the first argument. This operation is supported only for color operations (COLOROP).
  • MODULATEINVCOLOR_ADDALPHA - Similar to MODULATECOLOR_ADDALPHA, but use the inverse of the color of the first argument. This operation is supported only for color operations (COLOROP).

  • D3DTOP_BUMPENVMAP - Perform per-pixel bump mapping, using the environment map in the next texture stage, without luminance. This operation is supported only for color operations (COLOROP).
  • BUMPENVMAPLUMINANCE - Perform per-pixel bump mapping, using the environment map in the next texture stage, with luminance. This operation is supported only for color operations (COLOROP).
  • DOTPRODUCT3 - Modulate the components of each argument as signed components, add their products; then replicate the sum to all color channels, including alpha. This operation is supported for color and alpha operations.

One Level Up Object Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Object Section


TextureLighting - Quest3D

TextureLighting

Contents

  • 1 TextureLighting
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Call Channel

TextureLighting

General

Texture with calculated shadows and lights.

Please see the Texture Lighting documentation for more information.

Children

  1. Object Source - 3D Object
    • Object that is our source.
  2. Shadow Scene - OctTree
    • Octtree channel that has a scene linked to be used as shadow calculations
  3. Shadow/Lights Scene - 3D Render
    • Only used for internal settings do not use
  4. Lights - Light
    • Which lights are to be used to calculate the lighting

Description

This channel is used to calculate lighting inside a texture. This can be done trough Quest3D or used in the channel editor. When used in your scene you can link a Octtree channel to be used as a shadow scene. Note that the channel does not allow you to move your objects! This will result in recalculation of the tree. Link your original object to the first child link and the lights you wish to use to create the desired effect. Note that although you can use this channel in a realtime method it is not optimized to be used in this way!

Call Channel

Calling this channel will re-render the texture with the current lights and shadows. This is also done internally in Quest3D when you render the texture lighting. This way you can create realtime shadows in a texture. However since this method was never intended to be used this way the speed penalty will be severe.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com


OO ThisClassInstance - Quest3D

OO ThisClassInstance

(Redirected from ThisClassInstance)
Jump to: navigation, search

OO ThisClassInstance

Missing Documentation.
No Comments

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | OO | New in version 4.0 | Incomplete


TickCount - Quest3D

TickCount

Contents

  • 1 TickCount
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Applications
    • 1.5 Tips

TickCount

General

Represents the time since the last time you requested its value.

Description

This channel measures the time since you last used this channel. By default the time is given as a value relative to 25 frames per second. If this channel returns 1.0 the time between two calls is 1/25th sec. With the SetTimeBase you can make all TickCounts return 1.0 when the time between two calls is 1/30th sec for example.

CallChannel

Triggers a new timing without having to request the value.

Applications

Displaying framerate and adapting values to the frame rate and time base setting.

Tips

  • You can change the time base by using the SetTimeBase channel. You can even use this channel so all the TickCounts return a constant value independent of your frame rate. This is extremely useful if you are accustomed to using frames at every 30th second in stead of every 25th second for example.
  • You can make any value frame rate independent by multiplying it with the TickCount.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | Animation


Timer Command - Quest3D

Timer Command

Contents

  • 1 Timer Command
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks

Timer Command

General

Sends a command to a Timer Value

Children

  1. Start Value - Value
    • Some commands need a start value. Link the value for those commands to this position.
  2. End Value - Value
    • Some commands need an end value. Link the value for those commands to this position.

Description

The TimerCommand Dialog

With this channel you can send a command to a Timer Value channel.

Structure of timers in Quest3D

Each timer has an unique name in your project. When a timer exist it appears in the top dropdown list. You can create a new timer identifier by selecting "New.." from the dropdown list. There always is one timer available that is not removed when it is not used: the "Default" timer. All other timers are deleted automatically if there are no channels that use the timer.

There are two children you can link to this channel: a start and an end value. Some commands do not need a start or end value and some commands only need one or both values. If you send a command that loops the timer it loops between the start and end value.

CallChannel

Sends the command to the timer.

Remarks

The Envelope is linked to the default timer by default. To link it to another timer you must link a Timer Value to it.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System | Commands and Settings


Timer Value - Quest3D

Timer Value

Contents

  • 1 Timer Value
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Remarks
    • 1.5 Applications

Timer Value

General

Gets the value of a timer.

Description

The dialog of the TimerValue

This channel represents the value of a timer. Each timer has an unique name in your project. When a timer exist it appears in dropdown list. You can create a new timer identifier by selecting "New.." from the dropdown list. There is always is one timer available that is not removed when it is not used: the "Default" timer. All other timers are deleted automatically if there are no channels that use the timer.

Structure of timers in Quest3D

You can use this channel just like any other Value.

CallChannel

Has no effect

Remarks

  • By default the timerValue refers to the default timer. You can create a new timer by selecting 'new..'.
  • A timer value is never an exact number (like 8) when it is running, it will be a part of it (like 8.12).

Applications

Envelopes are linked to the default timer by default. This way you do not have to link each envelope to a timer. If you want an envelope to use another timer you have to connect a timer value to it.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Reference Manual/Customization/Tool bars - Quest3D

Reference Manual/Customization/Tool bars

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Tool bars
    • 1.1 General
    • 1.2 Rearranging, removing and adding buttons
    • 1.3 Button Settings
    • 1.4 Toolbar Settings
    • 1.5 Customizing the images

Tool bars

General

A toolbar is a window that contains buttons. In Quest3D each button is associated with a window. If the window is not visible the toolbar button is disabled. To add a toolbar to your interface read the 'Editor Layout' chapter.

The following text is copied from the toolbar help text:

Cutomizing the toolbar.

You can customize the set of buttons in a toolbar by selecting 'Customize..' from its context menu. After selecting this options the toolbar customization window pops up.

The list on the left side shows all available buttons. Each button can only be added once. The buttons on the toolbar are displayed in the list on the right side. Below the list on the left there is a drop down list that selects the category of available buttons. You can also add a separator to the tool bar. A seperator is a space between buttons.

Rearranging, removing and adding buttons

You can change the order of the toolbar buttons by pressing the 'Move Up' and Move Down' buttons. You can add a new button (or separator) by pressing the 'Add' button. You select the button you want to add in the list that is on the left side. To remove a button (or separator) press the 'Remove' button after selecting the button you want to remove from the right list.

Button Settings

Each button has a name and a tooltip text. The name is only displayed if the text is enabled. The tooltip is displayed after you hover your mouse over a button for some time.

Toolbar Settings

Button size The button size specifies the size of each image in the toolbar. All images in the toolbar are scaled to match this size.

Text Options You can choose either to hide the name of the buttons, show the name on the right of the buttons or show the name below the buttons.

Customizing the images

You can change the images of the buttons by replacing the images in the 'toolbar' folder in the Quest3D root. Note that the size of the images should match the toolbar image size setting to get the best results. The color with the the rgb values (192,192,192) is replaced by the background color of the toolbar.

Back to Main Index

Category: Reference Manual


Tracker Driver Intersense - Quest3D

Tracker Driver Intersense

Contents

  • 1 Tracker Driver Intersense
  • 2 General
    • 2.1 Children
    • 2.2 Description
    • 2.3 CallChannel
    • 2.4 Applications

Tracker Driver Intersense

General

Driver for Intersense Motion Tracker hardware

Children

none

Description

This is a Tracker Driver that can be linked to a Tracker Source channel. You can configure the driver to use the connected Intersense motion tracker hardware. The properties dialog will let you monitor and change properties for the connection.

CallChannel

This channel does not need to be called. It needs to be linked to a Tracker Source channel to be used.

Applications

Connect Intersens motion tracker hardware and use the movement for motion capture or real-time scene interaction. Trackers are also often used for virtual hands.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Tracker Driver P5 - Quest3D

Tracker Driver P5

Contents

  • 1 Tracker Driver P5
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Tracker Driver P5

General

Use the P5 Glove build in tracker as motion tracker source.

Children

none

Description

The P5 Glove has an build-in motion tracker, with this channel rotation and position can be retrieved from the glove. This channel needs to be linked to the Tracker Source channel. There are no properties that can be configured, it will always use the tracker of the connected P5 glove.

CallChannel

Does not have effect

Applications

Use the P5 glove as a virtual hand. Can be used together with the Glove Driver P5 to determine the position of the hand and fingers.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Tracker Driver Patriot - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Tracker Driver Patriot

From Quest3D

Jump to: navigation, search
WARNING: This item is deprecated

This items is probably included for backwards compatibility.
Please look at Patriot Command for the latest Patriot tracker driver.

Contents

  • 1 Tracker Driver Patriot
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

Tracker Driver Patriot

General

Polhemus Patriot motion tracker system driver

Children

No children can be linked

Description

This Tracker Driver channel will allow you to connect a Polhemus Patriot motion tracker system and read the values from it. It needs to be connected to the Tracker Source channel first.

The driver will search for a Polhemus Patriot system and connect all sensors automatically. These values can then be retrieved using the Tracker Vector channel. There are no properties that can be configured.

CallChannel

Has no effect

One Level Up - Channel List

Back to Main Index

Category: Depreciated


Tracker Source - Quest3D

Tracker Source

Contents

  • 1 Tracker Source
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 SDK
    • 1.5 CallChannel
    • 1.6 Applications

Tracker Source

General

Source setup for motion trackers, needed by other tracker channels and tracker driver channels.

Children

  1. Tracker Driver - Tracker Driver channel
    • Select the hardware to be used by the source

Description

This channel is used as the starting point for a motion tracker setup. Motion tracker hardware is selected by linked a Tracker Driver channel to this channel. There are several different driver available and new ones are added over time. The channel needs a driver before it can function.

After a Tracker Driver is linked you will need to call the channel to make a connection to the hardware. The connection is handled by the Tracker Driver channel. After a connection is made, the Tracker Vector channel can be used to retrieve data.

In the properties dialog you can change the name of the source. Please note that when you change the name here you should also change the name of the other tracker channels that use the source because they will look for a source by name.

SDK

The Tracker Driver has been added to the SDK so that other (custom) motion tracker systems can be added. Please note that Quest3D will be updated and new updates can have new motion tracker hardware support.

CallChannel

When this channel is called, the linked Tracker Driver will be connected. This channel needs to be called before the source can be used.

Applications

Move objects based on the position recorded by motion tracker hardware.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Tracker Vector - Quest3D

Tracker Vector

Contents

  • 1 Tracker Vector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Tracker Vector

General

Retrieve value vector information from a motion tracker source

Children

  1. Sensor Number - Value
    • Sensor number (if not configured in the properties dialog)

Description

This channel can be used to retrieve a Value Vector from a motion tracker source. You can link a Value channel to select a sensor number, or select it in the properties dialog.

The channel needs to be connected to a Tracker Source first before it is able to retrieve information. This can be done without linking, but by selecting the source from the drop down list in the properties dialog.

In the properties dialog you can also select the type of vector to retrieve. You can select the position or rotation vector, please check the tracker documentation to see what the sensor supports.

The sensor number can also be selected. The setting in the properties dialog is ignored when a Value child is linked. Also check the tracker hardware documentation and tracker driver documentation to see the number of sensors that are supported.

CallChannel

Does not have effect. The channels needs to be used as a Value Vector channel.

Applications

Retrieve the position and rotation from a motion tracker sensor. This can be recorded for motion capture or can be used real time for scene interaction.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Trackers | VR


Trigger - Quest3D

Trigger

Contents

  • 1 Trigger
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Examples

Trigger

General

Calls a channel at a value.

Children

  1. Value to Check - Value
    • This is the value you want to check.
  2. Channel to Trigger - All Types Channel
    • This channel is called when the trigger value is passed

Description

The dialog of the trigger

This channel calls another channel when a value passes a certain point. You can configure the trigger to call the channel when the value passes in any direction or you can specify the direction. You need to call this channel each time you want the trigger to check if it needs to call its child. Very often you will call the trigger each frame.

You are also able to configure the trigger to trigger after a certain time. Then the first child will be the delay time between each call in miliseconds.

CallChannel

Check if the channel needs to call its child and calls it if needed.

Remarks

The value of the trigger will be set to one (1) when the trigger is fired and directly back to zero after the trigger is done. This enabled you to use this channel as a value channel so you will not need to call it each frame.

Examples

Demonstration of the different trigger states

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Conditional Channels


Tutorials/Manual - Quest3D

Tutorials/Manual

< Tutorials(Redirected from Tutorial Manual)
Jump to: navigation, search

Contents

  • 1 Tutorial Manual
    • 1.1 Part I: Getting started
    • 1.2 Part II: The virtual studio
    • 1.3 Part III: Programming
    • 1.4 Part IV: Expert level
    • 1.5 Appendices

Tutorial Manual

Tutorial manual cover

Part I: Getting started

  • Chapter 1.1: Introduction
  • Chapter 1.2: How to use this manual
  • Chapter 1.3: Quest3D installation
  • Chapter 1.4: Example scenes
  • Chapter 1.5: The Quest3D user interface
  • Chapter 1.6: Channels
  • Chapter 1.7: Program flow
  • Chapter 1.8: Templates
  • Chapter 1.9: 3D scenes
  • Chapter 1.10: Publication
  • Chapter 1.11: Summary

Part II: The virtual studio

  • Chapter 2.1: 3D Objects
  • Chapter 2.2: Animation
  • Chapter 2.3: Object import
  • Chapter 2.4: Surface properties
  • Chapter 2.5: Lighting and shadows
  • Chapter 2.6: Cameras
  • Chapter 2.7: Graphic user interface
  • Chapter 2.8: Sound and music
  • Chapter 2.9: Landscapes
  • Chapter 2.10: Particle systems
  • Chapter 2.11: Character animation

Part III: Programming

  • Chapter 3.1: Logic
  • Chapter 3.2: Math
  • Chapter 3.3: For Loop
  • Chapter 3.4: Arrays
  • Chapter 3.5: Multiple channel groups
  • Chapter 3.6: Mathematical operators
  • Chapter 3.7: Pathfinding
  • Chapter 3.8: Finite State Machine

Part IV: Expert level

  • Chapter 4.1: Project management
  • Chapter 4.2: Physics simulation
  • Chapter 4.3: Database connectivity
  • Chapter 4.4: Networking
  • Chapter 4.5: Lua scripting

Appendices

  • Importing from Max and Maya
  • User interface actions list
  • Keyboard shortcuts
  • ActiveX

Categories: Tutorials | Reference Manual


Tutorials/Lightwave 3D exporting lightmaps - Quest3D

Tutorials/Lightwave 3D exporting lightmaps

< Tutorials(Redirected from Tutorial: Lightwave 3D exporting lightmaps)
Jump to: navigation, search

Contents

  • 1 Getting Lightmaps from lightwave to Quest 3d in a separate texture stage.
  • 2 Quick steps
  • 3 Full explanation
    • 3.1 Step 1
    • 3.2 Step 2
    • 3.3 Step 3
    • 3.4 Step 4
    • 3.5 Used Plugin

Getting Lightmaps from lightwave to Quest 3d in a separate texture stage.

This tutorial is made to show you how to get lightmap from Lightwave to Quest 3D in a separate texture stage. The advantage of having your diffuse map and lightmap in a separate texture stage is that you can have overlapping in you UV map for the diffuse (saving space), you can tile you Diffuse map if needed and you can easily adjust the diffuse map without having to render the lightmap again.

Quick steps

1 Make two UV sets for your object. The first is for you diffuse map and can have overlapping UV coordinates. The second 1 is for the lightmap and can not have overlapping UV coordinates.

2 Bake your lights to a white texture using the lightmaps ( non overlapping) UV set.

3 Import both UV sets on a separate copy of the object into Quest 3d.

4 Transfer the Lightmap UV set to the other object Using the merge UV set channel tool.

Full explanation

Step 1

As a example I made this very basic scene in Lightwave modeler. It’s a cube and a plain, nothing special.

Diffuse UV Set
Diffuse UV Set
Lightmap UV Set
Lightmap UV Set
Channel Tools
Merge UV Tool
Merge UV Tool
Final

Since this scene contains a cube with the same picture on all sides of the cube, Make UV overlap, making the resolution higher. Then make a second UV set with no overlapping (I used the atlas map type for this) On this particular object the resolution for the diffuse map will be about 9 times higher then the resolution of the lightmap. Now Complete the diffuse map as you like and save your scene.

Step 2

Now load your object into Lightwave Layout, put the surface color on pure white and remove the diffuse map. Add the Surface Baker Shader and for the UV set Pick Lightmap. Now set up your lights and render, the surface baker shader only 1 thread when rendering so if you prefer you can use the Surface Baker Camera witch does support multithreading.

Step 3

So now we have 1 object with 2 different UV sets and textures, to get them into Quest 3D we have to import the object 2 times, one time for the diffuser map and 1 time for the lightmap. So assign the diffuse map to you object with the correct UV set and export it to a .x file. Now assign the lightmap to the object with the correct UV set and export it.

Step 4

Now we have 2 objects in Quest 3D 1 with the diffuse map and 1 with the lightmap. We are now going to copy the UV set from the lightmap object to the diffuse map object so we have 2 different textures and UV sets on 1 object.

To do this go into object mode and control + click both objects. Now right click on 1 on the 2. Now select Channel Tools > Merge UV sets

To make the surfaces easier to recognize I named them all ( RMB on the surface in object mode > Channel Properties)

Make Sure the lightmap object is on the left, if not press “Swap <==>”.

Now set the texture stage you are going to import the UV set to, to 2.

To transfer the UV set, LMB on the Box surface in the left object/row then LMB on the same surface but in the right object/row.

Now click on “Copy UV Selection =>”. Do the same for the plain surface.

Now you can got to the second texture stage of the box surface and select UV set 1 and assign the lightmap texture. Under blender mode (advanced) put the Op to modulate. Do the same for the plain surface and we are finished, you can now remove the lightmap object.

Used Plugin

For this tutorial I used the DSTORM .X exporter (it also works for Lightwave 9). You can download it here:

  • Go to DSTORM webpage for Lightwave 6.5, 7.5 and 8.0 .X exporters

You can find all the information about installing and managing plugins in the help files of lightwave or look here.


TypeText - Quest3D

TypeText

Contents

  • 1 TypeText
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

TypeText

General

Type text real-time in the Scene Editor

Children

  1. On/Off - Value
    • If this value is set to 1 the channel will start recording keystrokes, if set to 0 it won't.
  2. Max Characters - Value
    • The maximum number of characters that can be typed.
  3. Accept Return - Value
    • When one (or not linked) this channel will record the return (or enter) key. If this channel is set to zero, the return key will be ignored.
  4. Characters to accept - Text
    • Text with characters that the typetext input field can accept

Description

This channel will allow you to type text with the keyboard and is recorded in the channel itself. The base type of this channel is Text that will allow this channel to be linked to a channel that accepts this type and you will need to link this channel to a channel that calls this channel at the same time.

The first child will able you to control if the capturing should take place or not. If the first child is set to zero no keyboard characters are captured, if set to one all keystrokes will be recorded and appended to this channels text.

With the second value child you are able to set a maximum number of characters that can be stored. When set to zero or if no child is linked, the maximum number of characters is 5000.

The third child is used to set if this channel will be able to record the return or enter key. If set to zero, the return key will be ignored. If not linked or set to one, the return key will be recorded and added to text.

The fourth child will be set by the channel (when linked). This is the number of characters that is currently in the string.

CallChannel

Has no effect.

Remarks

  • This channel will only work when it has the focus, you can detect if you have the focus with the HasFocus channel.
  • In an ActiveX control you might first direct the user to click on the control before text can be typed, this is because the ActiveX control should have the "focus" before the typed text is received by Quest3D. Best trick is to let the user click on a button before he/she can start typing. This will focus the control automatically. Other viewers have the same problem, but an ActiveX control does not have its own window, so it is a bit unnatural for the user.

Applications

  • To create 3D text, link this channel to a 3DText. Use from the Template tab in the "Objects\Primitives\" directory, the 3D text and replace the Text channel with this one.
  • If you want 2D text, use from the Template tab in the "Objects\Primitives\" directory the 2D text and replace the Text channel with this one. This templates uses the 3DTextFromTexture channel.

Tips

  • You will get a higer frame rate when typing real-time 2D text compared to 3D text.
  • If you would like to remove all text from this channel you can use the Set Text and an empty Text channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | UserInput | Variables


SDK/Channels/Unique Channels - Quest3D

SDK/Channels/Unique Channels

< SDK | Channels(Redirected from Unique Channels)
Jump to: navigation, search

Unique Channels

These channels work as Singletons in memory. You can initialize a channel in your source code and Quest3D will check if there is already such a channel loaded. If it is already loaded you will get the pointer to that loaded instance. If not Quest3D will create a new instance of the channel and return the pointer to that instance. This way, you can share one instance of a channel over a large number of channels and channel groups.

For example, the DX8_DirectGraphics channel should not be loaded every time a channel needs a DirectX 8.1 Graphics function. First of all this won't work, and second, this will require too much memory. With this system you are able to create some sort of management system for a certain group of channels. As already mentioned the DX8_DirectGraphics channel is loaded once (and initialized) and a lot of DX8 channels use this unique channel.

Usage

The following example will show the usage of the GetUniqueChannel() function that is part of the core Quest3D engine.

Aco_FloatChannel* floatChannel = (Aco_FloatChannel*)engine->GetUniqueChannel(FLOAT_CHANNEL_GUID);

or

Aco_FloatChannel* floatChannel = (Aco_FloatChannel*)engine->GetUniqueChannel(FLOAT_CHANNEL_GUID, "Test");

The first example will result in a pointer with a unique Value channel. All other channels that now use the same GUID will get the same pointer. If you would like to have more than one unique channel of a type you can also add a string that will identify what instance of the channel should be created. In the second example an unique float channel tagged "Test" will be created (or returned).

This function will always return a pointer with the base class type, so you should always type-cast it into into the correct channel type.

Remarks

Please note that the channels and 3rd party DLLs you use in your custom channel, must be added to your channel its dependency list. See Channel Dependencies


SDK/Channels/Unique Channels - Quest3D

SDK/Channels/Unique Channels

< SDK | Channels
Jump to: navigation, search

Unique Channels

These channels work as Singletons in memory. You can initialize a channel in your source code and Quest3D will check if there is already such a channel loaded. If it is already loaded you will get the pointer to that loaded instance. If not Quest3D will create a new instance of the channel and return the pointer to that instance. This way, you can share one instance of a channel over a large number of channels and channel groups.

For example, the DX8_DirectGraphics channel should not be loaded every time a channel needs a DirectX 8.1 Graphics function. First of all this won't work, and second, this will require too much memory. With this system you are able to create some sort of management system for a certain group of channels. As already mentioned the DX8_DirectGraphics channel is loaded once (and initialized) and a lot of DX8 channels use this unique channel.

Usage

The following example will show the usage of the GetUniqueChannel() function that is part of the core Quest3D engine.

Aco_FloatChannel* floatChannel = (Aco_FloatChannel*)engine->GetUniqueChannel(FLOAT_CHANNEL_GUID);

or

Aco_FloatChannel* floatChannel = (Aco_FloatChannel*)engine->GetUniqueChannel(FLOAT_CHANNEL_GUID, "Test");

The first example will result in a pointer with a unique Value channel. All other channels that now use the same GUID will get the same pointer. If you would like to have more than one unique channel of a type you can also add a string that will identify what instance of the channel should be created. In the second example an unique float channel tagged "Test" will be created (or returned).

This function will always return a pointer with the base class type, so you should always type-cast it into into the correct channel type.

Remarks

Please note that the channels and 3rd party DLLs you use in your custom channel, must be added to your channel its dependency list. See Channel Dependencies


UniqueID - Quest3D

UniqueID

Contents

  • 1 UniqueID
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Remarks

UniqueID

General

Holds a world unique number.

Description

This channel holds a number that is unique in the world. The number is created once the channel is created for the first time. The channel saves the number so it will never change once the channel is created.

In the dialog you are able to change the GUID by hand or create a new one by clicking on the "New" button. You will probably not need to use this dialog but this might be needed in future channels that will be released.

CallChannel

Has no effect

Remarks

  • This channel is not used by any channels yet, but is important for channel developers and future channels

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


User interface actions list - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

User interface actions list

From Quest3D

Jump to: navigation, search

A2 User interface actions list

Move the mouse cursor to a specific position | Move the mouse to move the on-screen cursor to a specific position on the screen
Click | Press the left mouse button and release
Double-click | Press the left mouse button, quickly release and quickly press again, and release
Right-click | Press the right mouse button and release
Press and hold the left button | Press and hold down the left mouse button, do not release
Drag the mouse | Press and hold down the left mouse button, do not release, and move the mouse around
Drag from a to b | Press and hold down the left mouse button, do not release, and move the on-screen cursor to a specific position on the screen
Select an item | Press the left mouse button while the on-screen cursor is over an on-screen item and release
Deselect an item | Hold down the control key and press the left mouse button while the on-screen cursor is over a selected on-screen item
Multi-select items | Move the on-screen cursor to the top left corner of the area you want to select, press and hold down the left mouse button, move the on-screen cursor to the bottom right corner of the area you want to select, and release
Add item to selection | With other items currently selected, hold down the control key, press the left mouse button while the on-screen cursor is over the to be selected on-screen item and release
Drag onto the Channel Graph /Add | Drag the name of a channel or template in the Channels / Templates list onto the Channel Graph
Connect channel 1 to channel 2 /Link channel 1 to channel 2Drag a link from channel 1 to channel 2 | Drag a line from the top child link square of channel 1 to the middle of channel 2 /Select channel 1, hold down the ‘L’ key and click on channel 2.
Connect channel 1 to the first child link of channel 2 | Drag a line from the top child link square of channel 1 to the first child link square below channel 2
Delete a channel | Click on the channel once to select it, then press the ‘delete’ key.
Detach a channel / Unlink a channel / Delete the link between two channels | Click on the line between the two channels to select it and press the ‘delete’ key.
Create a shortcut of a channel | Right-click on a channel and select the ‘Create Shortcut’ option /Right-click on a link and select the ‘Create Shortcut’ option
Open the properties window of a channel | Double-click on a channel /Right-click on a channel and select the ‘Channel Properties’ option
Rename a channel | Right-click on a channel and select the ‘General Properties’ option, type in the new name in the appropriate field and press the ‘OK’ button to accept
Store a selection in a folder | Make a selection, then press spacebar
Explode a folder | Click on a folder once to select it and press the spacebar Go to a Section Press the appropriate Section button on the Toolbar / Select the Section from the Application Menu under ‘Sections’ /Press the appropriate function key
Switch to Run / Edit / Run/Edit Mode | Press the appropriate button on the toolbar /Press ‘Pause Break’ key (toggles between Run and Edit Mode)

Back to Main Index


UserInput - Quest3D

UserInput

Contents

  • 1 UserInput
    • 1.1 General
    • 1.2 Description
    • 1.3 Mouse Information
      • 1.3.1 Left Mouse Down
      • 1.3.2 Right Mouse Down
      • 1.3.3 Mouse Delta Pos X
      • 1.3.4 Mouse Delta Pos Y
      • 1.3.5 On Left Mouse Down
      • 1.3.6 On Right Mouse Down
      • 1.3.7 Delta Mouse Z Pos
      • 1.3.8 Third Mouse Button
      • 1.3.9 Fourth Mouse Button
      • 1.3.10 Mouse Windows Pos X
      • 1.3.11 Mouse Windows Pos Y
      • 1.3.12 Mouse Delta Pos X Absolute
      • 1.3.13 Mouse Delta Pos Y Absolute
    • 1.4 User Keyboard Information
    • 1.5 Combined Keyboard Info
    • 1.6 Joystick 1 Information
      • 1.6.1 X, Y, Z Axis
      • 1.6.2 Buttons
      • 1.6.3 Rotation
      • 1.6.4 Sliders
    • 1.7 Joystick 2 Information
    • 1.8 Any Key
    • 1.9 Capture when inactive
    • 1.10 Convert Key for language settings
    • 1.11 CallChannel
    • 1.12 Remarks
    • 1.13 Tips

UserInput

General

Reads input devices like mouse, keyboard and joystick.

Description

This channel will set its value to the value that is read from an input device like the mouse, keyboard or joystick. Through the interface of the channel you can determine how the value of the channel should be set.

DX8 UserInput Interface

Mouse Information

There are a number of different mouse settings you can retrieve from this channel.

Left Mouse Down

Will set the given TRUE value if the left mouse button is pressed and set to the FALSE value if released.

Right Mouse Down

Will set the given TRUE value if the right mouse button is pressed and set back to the FALSE value if released.

Mouse Delta Pos X

Will set itself equal to the vertical change of the mouse. TRUE and FALSE value are ignored.

Mouse Delta Pos Y

Will set itself equal to the horizontal change of the mouse. TRUE and FALSE value are ignored.

On Left Mouse Down

Will set itself once to the TRUE value when the left mouse button is pressed and the next time the values is asked it will return the FALSE value even if the button is still pressed.

On Right Mouse Down

Same as above, this time for the right mouse button.

Delta Mouse Z Pos

Reads the change of the scroll wheel of the mouse. TRUE and FALSE values are ignored.

Third Mouse Button

See left mouse. Most of the times this is the middle mouse button (or pressing the scroll wheel).

Fourth Mouse Button

See Left Mouse Button. Some mice have a fourth button.

Mouse Windows Pos X

Absolute mouse X position relative to screen pixels

Mouse Windows Pos Y

Absolute mouse Y position relative to screen pixels

Mouse Delta Pos X Absolute

Will set itself equal to the vertical change of the mouse. TRUE and FALSE value are ignored. The absolute version of this function calculates its values using the absolute value of the mouse cursor to get an offset. Instead of using the hardware delta output of the mouse. This fixes problems that exist for tablet and touchscreens. Of course for a normal mouse this will mean that ones your mouse is at the end of your screen no new delta positions are calculated!

Mouse Delta Pos Y Absolute

Will set itself equal to the vertical change of the mouse. TRUE and FALSE value are ignored. The absolute version of this function calculates its values using the absolute value of the mouse cursor to get an offset. Instead of using the hardware delta output of the mouse. This fixes problems that exist for tablet and touchscreens. Of course for a normal mouse this will mean that ones your mouse is at the end of your screen no new delta positions are calculated!

User Keyboard Information

When the given key is pressed, the TRUE value is set and if released the FALSE value will be set.

In the Configuration window you can set a key to capture by pressing the "Capture a key to use" button once and then pressing the key on the keyboard.

Note : On some systems it can be possible that the numpad keys will not wok.
The reason it doesn't work is because of the convert for language flag.
It will replace the numpad 8 for example with the arrow up.

Combined Keyboard Info

This is used to read the status of the special keys on the keyboard like, ALT, CONTROL and SHIFT if the side of the keyboard does not matter. If you want to get the status of just one side of the keyboards special keys, use the "User Keyboard Information" above.

Joystick 1 Information

The channel will read the following information from the joystick:

X, Y, Z Axis

The X and Y axis are the up/down and left/right positions of the joystick. The Z is the throttle or the tilt position of the joystick. The range of the stick is from -1.0 to 1.0 where 0 is the rest position of the stick.

Buttons

A joystick can have a number of buttons, you can ask the value of buttons number 1 to 18. The position of those buttons is different per joystick. The fire button of the joystick is on position 1 most of the times.

Rotation

Some joysticks or joypads use the X, Y or Z rotation values. These values can be selected and like the axis these are also ranged from -1.0 to 1.0 where 0 is the rest position.

Sliders

You are able to select sliders on a joystick (like throttle). Range from -1.0 to 1.0

Joystick 2 Information

Same as joystick 1 but the values will respond to a second connected joystick.

Any Key

This will set the value of the channel to the true value when any key on the keyboard is pressed

Capture when inactive

With this option enabled, the application will read user input even when the window of the project is not active. The 'keep running when inactive' feature must be enabled during publishing for this feature to work.

Convert Key for language settings

When this option is enabled, the keyboard layout will be taken into account. When disabled, the QWERTY keyboard layout is assumed.

CallChannel

Has no effect

Remarks

Please note that most joysticks are analog devices so the values will vary per joystick and per frame.

Tips

  • Keep adding up the Delta Pos X and Y to determine the coordinates

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | UserInput


Reference Manual/Help on Help/Using help - Quest3D

Reference Manual/Help on Help/Using help

< Reference Manual
Jump to: navigation, search

Contents

  • 1 Using help
    • 1.1 General
    • 1.2 Context help on editor
    • 1.3 Context help on channels
    • 1.4 Search documentation

Using help

General

There are a few different ways to get help in Quest3D. The main help key is the F1 key. When F1 is pressed the help window will be opened and you can use the content or search function to find what you are looking for.

Context help on editor

If you would like to know more about a part of the editor, you can move the mouse pointer over the window you would like to get help about and simply press F1.

Context help on channels

If your mouse is above a channel in the channel editor you can press the right mouse button to get the menu on the left. If you select the option 'Help in context help window' help about that channel is displayed. You can also select the channel and press F1.

Search documentation

You can search this documenation by using the "Search" tab on the left of the screen. If you do not see this tab, you should press the "Show" button on top of this help window to show the content and the search functions.

You can enter any keyword(s) you like and to display a list of pages that contain those keywords just press the "List Topics" button to start the search.

Back to Main Index

Category: Reference Manual


Value - Quest3D

Value

Contents

  • 1 Value
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Remarks
    • 1.5 Applications
    • 1.6 Tips

Value

General

Holds a value

Children

  1. Source Value - Value
    • When linked this value is used as the channels value

Description

This channel holds a value. This value is saved and loaded when the channelgroup is saved and loaded. A value is a "Floating-Point" value so it can either hold whole or broken numbers.

You can change the value through the interface:

Value Interface

Just change the value to the value you would like. When the window above is opened you will see the latest value of this channel.

Remarks

  • Value is remembered as a floating-point value with 4 bytes. This means that you loose precision with numbers that have more than 7 digits. For example 1000000,01 will become 1000000.
  • This channel is often used for logical "True" and "False". Set the channel value to 1 (one) for "True" and 0 (zero) for "False".
  • Please note that the channel might change value while you are editing it and also directly after editing.

Applications

This channel is used by many as child, like Vector, Envelope, Lights, Camera and many many more. This combined with the fact that this channel is used as base type you can get a large number of linking possibilities.

Tips

  • Use it to remember logic values like scores etc.
  • Use it in combination with the switch channel to determine what section in your application you are.
  • As a programmer of channels try to use this channel often so that all your settings can be affected by everyone that creates a new value channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


Reference Manual/Editor/Animation Section/Value Sliders - Quest3D

Reference Manual/Editor/Animation Section/Value Sliders

< Reference Manual | Editor | Animation Section
Jump to: navigation, search

Value Sliders

General

With this window you are able to change or animate Value or Envelope channels.

To change or animate Envelope channels first select one or more Envelope or Value channels in the Channel Graph and switch back to the Animation Section and open the Value Sliders window. You can do this by clicking on the ‘Values’ tab in the animation section.

Click the values tab to edit values

Now click on the "Add-Restore" button to add the values to the list of values you are editing. For each value you’ll see a slider. The minimum and maximum values of the sliders can be set with the values that are next to the words "Slider Range".

The sliders are positioned at the current value of the corresponding channel. You can change a value by dragging the slider. All other channels that have a Value as base class can also be selected.

To animate values you need to make sure the Values you added are Envelopes and not regular Values. If one of the values you added is an envelope you will see that keys are generated in the Envelope Slider.

Keys in the Envelope slider bar

With the Envelope slider bar you can edit keys of multiple envelopes at once. If one of the envelopes has a key at a poison the Envelope slider will show a key.

If you want to remove all sliders that are configured in the window you click on the "Clear" button. This will leave you with a empty window so you can use the "Add/Restore" button again after selecting the correct channels.

Set Range

The sliders that are displayed change the channels they are linked to when the slider is moved. You are able to change the range of the sliders by changing the "Slider Range" values.

You are able to use positive and negative values. Once you have changed these values, the sliders will use this new values.

One Level Up Anitmation Section

Back to Editor

Back to Main Index

Categories: Reference Manual | Editor | Animation Section


Value Vector - Quest3D

Value Vector

Contents

  • 1 Value Vector
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Value Vector

General

Used by channels to group 3 values together.

Children

  1. First Value - Value
    • First value of the vector
  2. Second Value - Value
    • Second value of the vector
  3. Third Value - Value
    • Third value of the vector

Description

Has 3 values as input and gives a vector to the channel that uses a vector. A vector is nothing more than the 3 values given at once.

If you double click the channel you will get above dialog. You can manual change the 3 values, the new value will be copied to the Value linked.

CallChannel

Has no effect

Applications

Vectors are often used by channel programmers to group information together and limit the number of childeren a channel has. Used often for grouping settings that consist of 3 values. Like colors(R, G, B) position (X, Y, Z).

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Variables


ValueOperator - Quest3D

ValueOperator

Contents

  • 1 ValueOperator
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Loop Relative Value
      • 1.3.2 Limit Relative Value
      • 1.3.3 Limit Absolute Value
      • 1.3.4 Dot Product
      • 1.3.5 Get Vector x
      • 1.3.6 Get Vector y
      • 1.3.7 Get Vector z
      • 1.3.8 Get Vector Length
      • 1.3.9 Get Vector Distance
      • 1.3.10 Get Square Distance
      • 1.3.11 Get Relative Speed
      • 1.3.12 Get Relative Distance
      • 1.3.13 Get Text Length
      • 1.3.14 Text Compare
      • 1.3.15 First position of text1 in text2
      • 1.3.16 Last position of text1 in text
      • 1.3.17 Text to integer value
      • 1.3.18 Text to real value
      • 1.3.19 Is 3D Object visible
      • 1.3.20 Toggle/FlipFlop
      • 1.3.21 Get file size in bytes
      • 1.3.22 Get dynamic loading progress
      • 1.3.23 Seed the random function
      • 1.3.24 Get Distance to Camera
      • 1.3.25 Count string occurences of text1 in text2
      • 1.3.26 Toggle/FlipFlop triggered
      • 1.3.27 Loop Relative Value Exclusive
      • 1.3.28 Time stamp

ValueOperator

General

Calculates equations that have a value as output.

Children

  1. Different types - All Types Channel
    • Channels that are source for the configured operation

Description

This operator can perform operations on vectors and matrices. You can also use it to get info from vectors etc..

Loop Relative Value

Loop the value operator between two values increasing or decreasing it with a relative input value. This operation takes 3 input values. The first value is used for the start of the looping value. The second is the end of the loop. The thirth value is the value by which the loop is increased or decreased. Make sure the start value is a lower value than the end value.

For example: Operator itself has the value 0. Start value is -10. End value is 10.

1st loop: Relative value = 1 Result = 1

calculation: 0 + 1 = 1 1 is bigger the -10 and smaller then 10

2nd loop: Relative value = 12 the operator will return -7.

calculation: 1 + 12 = 13 13 is bigger then -10 but is also bigger then the end value 10 13 - 10 = 3 we are 3 further then we where allowed so -10 + 3 = -7

This operator is very important to loop smoothly between two values.

Advanced: this also prevents the float value to loose precision keeping the movements of your loop smooth.

Limit Relative Value

First value is the limit low value. Second value is the limit high value. Third value is used as a relative value adding that value to the old result.

Using this operator you can create a value that never exceeds its boundaries.

Limit Absolute Value

First value is the limit low value. Second value is the limit high value. Third value is used as an absolute value using that value for boundary checking.

Using this operator you can create a value that never exceeds its boundaries.

Dot Product

The dot product projects one vector onto another.

  • The result equals the length of v1 times the length of v2 times the COS of the angle between the two vectors.

|v1|*|v2|*COS(a)

  • If you normalize v2 you can calculate how much v1 is pointing into the direction of v2. In other words: if v1 is a velocity vector and v2 the z-axis of an object you can calculate it's forward speed. This is useful for calculating the rotation of car wheels or the animation speed for a walking character.

Get Vector x

Get the x of a vector

Get Vector y

Get the y of a vector

Get Vector z

Get the z of a vector

Get Vector Length

Get the Length(magnitude) of a vector

Get Vector Distance

Get the distance between two positions.

Get Square Distance

Get the square distance betwen two positions.

Get Relative Speed

Get the speed between two matrices

Get Relative Distance

Get the distance between two matrices

Get Text Length

Get the length of the text (in characters) of the first text child linked.

Text Compare

Compares the first text with the second text channel linked and will return 1 of both are the same.

First position of text1 in text2

Get the first position of text1 that is found in text2

Last position of text1 in text

Get the last position of text1 that is found in text2

Text to integer value

Convert the linked text channel to a integer value (no broken numbers)

Text to real value

Convert the linked text channel into a value

Is 3D Object visible

This channel will set itself to one (1) when the linked 3D Object is visible using the current camera and will be set to zero when it is not

Note : Make sure you check on the "Check whole object for frustrum culling" on the 3D Object properties dialog of the object you want to check, to get correct results .

Toggle/FlipFlop

The value of this channel will be flipped / toggled (0 to 1 and vice versa) if the first value child is one.

Note : The value state of this operator can not be changed by any other operation, like a Set Value.

Get file size in bytes

When the linked text channel has a filepath, the size of the file is retrieved and this channel is set to that number of bytes.

Get dynamic loading progress

Returns the status of a dynamically loaded channel group. The value returned will range from 0 to 1, where 1 is fully loaded. The public call channel linked will be used to retrieve the information from.

Seed the random function

Operator removed as from version 3.5.

To generate a random number use the RAND() function of the Expression Value channel.

Get Distance to Camera

This operator returns the distance between the linked Matrix and the current active camera position.

Note : Make sure you call the correct camera before using this operator.

Count string occurences of text1 in text2

Returns the number of times text1 is completly found in text2.

Toggle/FlipFlop triggered

Works like the normal flip flop function but will now flip flop when the child value has been low again. This eliminates the need to use a trigger connected to this value operator. Link for example a Textout channel on left mouse directly to this value operator and you are able to flip flop when pressing left mouse.

Note : The value state of this operator can not be changed by any other operation, like a Set Value.

Loop Relative Value Exclusive

The same as loop ralative value only now looping with whole numbers is the same going forward or backward in the loop.

Time stamp

Retrieve the time stamp of the linked channel. The value of the operator will be set to the timestamp of the channel, and the operator channel itself will also be stamped. Any type of channel can be linked.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Operators


VectorOperator - Quest3D

VectorOperator

Contents

  • 1 VectorOperator
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
      • 1.3.1 Multiply matrix with vector
      • 1.3.2 Add two vectors
      • 1.3.3 Cross Product
      • 1.3.4 Normalize Vector
      • 1.3.5 Multiply
      • 1.3.6 Multiply value
      • 1.3.7 Divide
      • 1.3.8 Divide Value
      • 1.3.9 Subtract
      • 1.3.10 Subtract value
      • 1.3.11 Add value
      • 1.3.12 Damping
      • 1.3.13 Speed
      • 1.3.14 Lerp
      • 1.3.15 Set Length
      • 1.3.16 Project To screen
      • 1.3.17 UnProject from screen
      • 1.3.18 Transforms normal
      • 1.3.19 Mouse intersect XY Plane
      • 1.3.20 Get Translation
      • 1.3.21 Get X Axis
      • 1.3.22 Get Y Axis
      • 1.3.23 Get Z Axis
      • 1.3.24 Get Bounding box minimun
      • 1.3.25 Get Bounding box maximun
      • 1.3.26 Damping time corrected
      • 1.3.27 Project to 2D screen coordibates
      • 1.3.28 Add Delta Vector
      • 1.3.29 Get Size Vector from Matrix
      • 1.3.30 Screen pos Intersect XY Plane
      • 1.3.31 Get Average Vertex Position
      • 1.3.32 Get Average Normal
      • 1.3.33 Get Pixel From Texture
      • 1.3.34 Get World Position of Bone
    • 1.4 CallChannel
    • 1.5 Applications
    • 1.6 Tips

VectorOperator

General

Calculates equations that have a vector as the result.

Children

  1. Parameters - All Types Channel
    • These are the parameters for the equation. The order is from left to right. You can link different types in any order you like (vector, value is the same as value, vector)

Description

The vector operator dialog

The vector operator can be used as a vector. The x,y and z values are calculated when they are requested. You must link the parameters of the operation from left to right. so value1, value2 is not the same as value2, value1. If the parameters are from a different type the order does not matter so value1, matrix1 is the same as matrix1, value1.

You can choose from the following operations:

Multiply matrix with vector

Transforms a 3D point in space with a matrix. Child 1: The vector you want to calculate the transformed version from Child 2: The matrix to use for the transform

Add two vectors

Calculates the sum of two vectors. Child 1: Vector 1 Child 2: Vector 2

Cross Product

Calculates the cross product of vector 1 and vector 2. Child 1: Vector 1 Child 2: Vector 2

Normalize Vector

Scales a vector so its length is 1.0. Child 1: The vector

Multiply

Multiplies each element of a vector with the corresponding element in the other vector. Child 1: Vector 1 Child 2: Vector 2

Multiply value

Multiplies each element of a vector with a value. Child 1: Vector Child 2: value

Divide

Divides each element of vector 1 by the corresponding element in vector 2. Child 1: Vector 1 Child 2: Vector 2

Divide Value

Divides each element of vector 1 by a value. Child 1: Vector Child 2: Value

Subtract

Subtracts vector 2 from vector 1. Child 1: Vector 1 Child 2: Vector 2

Subtract value

Subtracts a value from each element of a vector. Child 1: Vector Child 2: Value

Add value

Adds a value to each element of a vector. Child 1: Vector Child 2: Value

Damping

Damps a vector based on a damping value. Damping smoothes the motion of a vector. The following formula is used: OLD+(NEW-OLD)*"Damping Value" Child 1: Vector Child 2: Damping Value

Speed

Calculates the speed in each x,y and z direction. Child 1: Vector

Lerp

Calculates a linear interpolation between two vectors. If the interpolation value is 0.0 the result is vector 1. If the interpolation value is 1.0 the result is vector 2. Child 1: Vector 1 Child 2: Vector 2 Child 3: Interpolation value

Set Length

Sets the length of a vector Child 1: Vector Child 2: Length

Project To screen

Converts from a 3D space coordinate to a screen coordinate. Child 1: Vector

UnProject from screen

Converts from a screen coordinate to a 3D space coordinate. Child 1: Vector

Transforms normal

Transforms a normal vector with a matrix. Child 1: The normal vector to transform Child 1: The matrix to use for the transform

Mouse intersect XY Plane

Calculates the intersection point of a the XY plane of a Matrix and the mouse. You can use this function to position a 3D mouse pointer in 3D space. If you want to calculate the intersection of the mouse and the XZ plane you can take a matrix rotated 90 degree on the x axis for example. Child 1: A matrix to specify a XY plane

Get Translation

Takes the translation information from a matrix. Child 1: Matrix

Get X Axis

Takes the X axis vector from a matrix. Child 1: Matrix

Get Y Axis

Takes the Y axis vector from a matrix. Child 1: Matrix

Get Z Axis

Takes the Z axis vector from a matrix. Child 1: Matrix

Get Bounding box minimun

Each objectdata has its own bounding box which can be retrieved. This will retrieve the bounding box minimum positions. Child 1: ObjectData

Get Bounding box maximun

Each objectdata has its own bounding box which can be retrieved. This will retrieve the bounding box maximum positions. Child 1: ObjectData

Damping time corrected

Damping time corrected is the same as damping only it takes into account different framerates and still damp the same. Child 1: Value Vector Child 2: Value

Project to 2D screen coordibates

This operator has the same function as the Project to Screen Operator, but this one will return actual pixel coordinates of a 3D world vector position.

First child needs a Value Vector

Add Delta Vector

This operator will add delta vectors to the Value Vector linked on the first child.

Get Size Vector from Matrix

This operator returns you the size vector - scale of an Matrix – Motion.

The first child needs a Matrix or Motion to retrieve the size information from.

Screen pos Intersect XY Plane

Calculates the intersection point of a the XY plane of a Matrix and the screen. The first and second child are the coordinate Value of the screen, the third child is the Matrix you want to check the intersection with.

Get Average Vertex Position

This operator returns you the vector values of the average vertex positions.

The first child needs the 3D ObjectData channel of the Surface you want to know the Average Vertex Position

Get Average Normal

This operator returns you the vector values of the average Normals.

The first child needs the 3D ObjectData channel of the Surface you want to know the Average Normals.

Get Pixel From Texture

New in 3.5

This operator returns you the color information of a pixel of a Texture. This information is returned in RGB values from 0 to 1. To the first child link a Texture where you want to retrieve the information from, the second and third child are the coordinates where you want to know the information from.

As from 3.5.5. Get Pixel From texture supported also media textures and render to texture. Rendertotexture however will get a severe speed penalty for using this. Since the 3d device doesn’t like it when you will lock a render buffer.

Get World Position of Bone

New in 3.5

This operator returns you the vector position of a bone. To the First child link the Skinned Character you want to retrieve the info from, the second child is the number of the bone you want to get the vector position from.

CallChannel

Calling this channel has no effect.

Applications

The vector operator can be used to multiply, transform, add or interpolate vectors. With the vector operator you can also make sliders, a 3d mouse or convert from 3d coordinates to screen coordinates.

Tips

You can easily use a the "mouse intersect XYPlane" to create a 3d mouse. Just use this channel as the position of your 3d mouse pointer. Now you only need to move the camera so the pointer has the correct size.

By using the motion of an object as parameter of this function you can calculate where the mouse intersects the XY plane of your object. You can use this to create sliders that are not parallel to the screen for example. If you do not link a matrix the calculation takes the XY plane of the world.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Operators


VertexAnimation - Quest3D

VertexAnimation

Contents

  • 1 VertexAnimation
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

VertexAnimation

General

Contains imported animated vertext meshes with interpolated animation support.

Children

  1. End Frame - Value
    • End of loop
  2. Begin Frame - Value
    • Start of loop
  3. Frame Selector - Value
    • The frame index of the animation

Description

Example of a vertex animated character

This channel contains a number of meshes (frames of a vertext animation) that can be used as 3D ObjectData. This children of this channel control how this data is animated. The channel interpolates the the data.

The "Frame Selector" child will set what frame of the animation should be shown. Because this channel interpolates the frames this can be any value, not only real values.

The "Begin Frame" and "End Frame" children should also be set before the animation will work.

The "Begin Frame" child must be set to the first frame you use for the animation. The "End Frame" should be set to the last frame in the animation. If you now control the animation with the "Frame Selecter" the channel will know how to interpolate between the last and the first frame. The "Frame Selector" value should always move 1.0 further than the "End Frame" value. During this single frame this channel will do the actual interpolation between the last and first frame. When the "Frame Selector" then starts again at the beginning, the animation will not jump but move smoothly.

This data in this channel is created by an importer (like the MD2 importer) and can't be configured in Quest3D.

CallChannel

Calling this channel will draw the mesh with the current surface settings, world matrix, camera and lights.

Remarks

Make sure the begin and end frame define the loop. You'll have to loop the frame selector yourself.

The "Frame Selector" value should loop one frame count more that the "End Frame" value for smooth interpolation between the last and first frame.

Applications

Animating characters.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Animation | Objects and Rendering


Tutorials/Videos - Quest3D

Tutorials/Videos

< Tutorials
Jump to: navigation, search

Video Tutorials

Welcome to our set of video tutorials, which help you to learn more about Quest3D. You can download the source and end-source of each tutorial as well, to follow the instructions step by step or play around a bit with the source.

Have fun exploring and learning how to build a Quest3D application!

Download Video Tutorials

Some tutorials only consist of a movie(.WMV) file. For other tutorials you need files that are available in a .ZIP file with the same name.

The tutorial files are available here: ftp://quest3d.nl/Downloads/videotutorials/

Remarks

The video tutorials are based on Quest3D 3.0e. Moving from Quest3D 3.0 to Quest3D 3.5 is a small step, so the tutorials are valuable for 3.5 users as well.

You can follow the video tutorials using a higher version of Quest3D 3.0, but if you want to use Quest3D 3.0, download it here:

Categories: Tutorials | Reference Manual


SDK/Visual Studio 2005 Deployment - Quest3D

SDK/Visual Studio 2005 Deployment

< SDK(Redirected from Visual Studio 2005 Deployment)
Jump to: navigation, search

Contents

  • 1 Visual Studio 2005 Deployment
    • 1.1 Workarounds for Quest3D versions prior to 3.6
      • 1.1.1 Custom Setup
      • 1.1.2 Static linking
      • 1.1.3 Remove CRT dependencies
    • 1.2 Quest3D 3.6 and later
  • 2 Checklist if you have problems after publishing
  • 3 External Links

Visual Studio 2005 Deployment

The C and C++ runtime libraries that are included in the final release of Visual Studio 2005 must now be deployed as Side-by-Side Assemblies. if the target machine does not have the runtime installed already. Regular 3rd party DLL files, as well as the Visual Studio 2003 runtime files, are deployed via the Quest3D\3rd directory using the functions AddDLLDepend in DoDependencyInit. However, this method is not possible with the new method of deployment introduced in Visual Studio 2005.

Workarounds for Quest3D versions prior to 3.6

Custom Setup

You can deploy your Quest3D application using a custom setup program, such as Windows Installer or Inno Setup.

Within your setup program, install the redistributable CRT package. together with your Quest3D application. See also the checklist.

Static linking

Statically link Channels to the runtime libraries. This removes the need for the DLLs completely. However, all the duplicated code is vastly inflates the size of each channel DLL, so this is only an option if you want to deploy just a few Channels. Linking statically also brings restrictions in the passing of objects between channels due to the different heaps used by each instance of the CRT.

Remove CRT dependencies

Remove all dependencies on the CRT. Basic functionality could be obtained from the libcmt library. STL support could come from Boost or another STL impelemtation, such as STL Port.

Quest3D 3.6 and later

Quest3D 3.6 and later publish the Visual Studio 2005 assemblies as side-by-side assemblies if you add references to the runtime files in your channel.

An example of a DoDependencyInit implementation looks like this:

void MyChannel::DoDependencyInit(A3d_List* currentDependList) {
//Include Visual Studio 2005 runtime libraries
AddDLLDepend("MSVCR80.DLL", currentDependList);
AddDLLDepend("MSVCP80.DLL", currentDependList);
AddDLLDepend("MSVCM80.DLL", currentDependList);
AddDLLDepend("Microsoft.VC80.CRT.manifest", currentDependList);
}

If your channel contains the above mentioned DLL dependency initialization, the publisher will automatically publish the runtime DLLs as side-by-side assemblies in the <YourQuest3DFolder>/3rd directory and its manifest.

Important: Note that the version of the runtime you use (you can find the exact version in the generated manifest file of you Quest3D channel), should be the same as the version in the <YourQuest3DFolder>/3rd directory. If you defenitely want to change to your runtime version, you can change the files and manifest file in <YourQuest3DFolder>/3rd and change the manifest file for QuestViewer.exe in the <YourQuest3DFolder>/Config/Publish directory so that it uses your runtime version.

  • If you otherwise want to publish with another runtime version or if you want to install the runtime libraries in a custom setup (as mentioned in the workarounds section), you can leave the above-mentioned dependency declarations out.
  • If you use more than one runtime version in your project, you cannot publish the DLL's as side-by-side assemblies, but you must create a custom install with all the needed CRT installer setups.
  • If you publish to a screensaver, the redistributable package will always be included and installed with your screensaver. Publishing as side-by-side assemblies is for a screensaver not possible.

Checklist if you have problems after publishing

Check if:

  • All custom channels you created and 3rd party libraries you invoke use the same runtime version as you can find in the <YourQuest3DFolder>/3rd.
  • All your custom channels and 3rd party libraries use the same version, but the version differs from <YourQuest3DFolder>/3rd. In that case, you can replace the files MSVCP80.DLL, MSVCR80.DLL, MSVCM80.DLL and Microsoft.VC80.CRT.manifest with the files you can find in <YourVisualStudio2005Folder>/VC/redist/x86/Microsoft.VC80.CRT/
  • Your custom channels and 3rd party libraries use different versions of the runtime. In that case you can either choose to link everything to the same runtime version or install the redistributable CRT package from Microsoft with your published program.

Important: The CRT redistributables on the Microsoft website are not the latest. The CRT redistributable package changed in VS2005 SP1 are only to be found in <YourVisualStudio2005Folder>/SDK/v2.0/Bootstrapper/Packages/vcredist_x86.

Be also sure that you publish the Release version of your channels.

External Links

Visual C++ Libraries as Shared Side-by-Side Assemblies

Back to Main Index


SDK/Visual Studio 2005 Deployment - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

SDK/Visual Studio 2005 Deployment

From Quest3D

< SDK
Jump to: navigation, search

Contents

  • 1 Visual Studio 2005 Deployment
    • 1.1 Workarounds for Quest3D versions prior to 3.6
      • 1.1.1 Custom Setup
      • 1.1.2 Static linking
      • 1.1.3 Remove CRT dependencies
    • 1.2 Quest3D 3.6 and later
  • 2 Checklist if you have problems after publishing
  • 3 External Links

Visual Studio 2005 Deployment

The C and C++ runtime libraries that are included in the final release of Visual Studio 2005 must now be deployed as Side-by-Side Assemblies. if the target machine does not have the runtime installed already. Regular 3rd party DLL files, as well as the Visual Studio 2003 runtime files, are deployed via the Quest3D\3rd directory using the functions AddDLLDepend in DoDependencyInit. However, this method is not possible with the new method of deployment introduced in Visual Studio 2005.

Workarounds for Quest3D versions prior to 3.6

Custom Setup

You can deploy your Quest3D application using a custom setup program, such as Windows Installer or Inno Setup.

Within your setup program, install the redistributable CRT package. together with your Quest3D application. See also the checklist.

Static linking

Statically link Channels to the runtime libraries. This removes the need for the DLLs completely. However, all the duplicated code is vastly inflates the size of each channel DLL, so this is only an option if you want to deploy just a few Channels. Linking statically also brings restrictions in the passing of objects between channels due to the different heaps used by each instance of the CRT.

Remove CRT dependencies

Remove all dependencies on the CRT. Basic functionality could be obtained from the libcmt library. STL support could come from Boost or another STL impelemtation, such as STL Port.

Quest3D 3.6 and later

Quest3D 3.6 and later publish the Visual Studio 2005 assemblies as side-by-side assemblies if you add references to the runtime files in your channel.

An example of a DoDependencyInit implementation looks like this:

void MyChannel::DoDependencyInit(A3d_List* currentDependList) {
//Include Visual Studio 2005 runtime libraries
AddDLLDepend("MSVCR80.DLL", currentDependList);
AddDLLDepend("MSVCP80.DLL", currentDependList);
AddDLLDepend("MSVCM80.DLL", currentDependList);
AddDLLDepend("Microsoft.VC80.CRT.manifest", currentDependList);
}

If your channel contains the above mentioned DLL dependency initialization, the publisher will automatically publish the runtime DLLs as side-by-side assemblies in the <YourQuest3DFolder>/3rd directory and its manifest.

Important: Note that the version of the runtime you use (you can find the exact version in the generated manifest file of you Quest3D channel), should be the same as the version in the <YourQuest3DFolder>/3rd directory. If you defenitely want to change to your runtime version, you can change the files and manifest file in <YourQuest3DFolder>/3rd and change the manifest file for QuestViewer.exe in the <YourQuest3DFolder>/Config/Publish directory so that it uses your runtime version.

  • If you otherwise want to publish with another runtime version or if you want to install the runtime libraries in a custom setup (as mentioned in the workarounds section), you can leave the above-mentioned dependency declarations out.
  • If you use more than one runtime version in your project, you cannot publish the DLL's as side-by-side assemblies, but you must create a custom install with all the needed CRT installer setups.
  • If you publish to a screensaver, the redistributable package will always be included and installed with your screensaver. Publishing as side-by-side assemblies is for a screensaver not possible.

Checklist if you have problems after publishing

Check if:

  • All custom channels you created and 3rd party libraries you invoke use the same runtime version as you can find in the <YourQuest3DFolder>/3rd.
  • All your custom channels and 3rd party libraries use the same version, but the version differs from <YourQuest3DFolder>/3rd. In that case, you can replace the files MSVCP80.DLL, MSVCR80.DLL, MSVCM80.DLL and Microsoft.VC80.CRT.manifest with the files you can find in <YourVisualStudio2005Folder>/VC/redist/x86/Microsoft.VC80.CRT/
  • Your custom channels and 3rd party libraries use different versions of the runtime. In that case you can either choose to link everything to the same runtime version or install the redistributable CRT package from Microsoft with your published program.

Important: The CRT redistributables on the Microsoft website are not the latest. The CRT redistributable package changed in VS2005 SP1 are only to be found in <YourVisualStudio2005Folder>/SDK/v2.0/Bootstrapper/Packages/vcredist_x86.

Be also sure that you publish the Release version of your channels.

External Links

Visual C++ Libraries as Shared Side-by-Side Assemblies

Back to Main Index


Wake Particle - Quest3D

Wake Particle

Contents

  • 1 Wake Particle
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

Wake Particle

General

This channel can be used to create a wake or a missle trail.

Children

  1. Left wake start - Value Vector
    • Vector position of the left side of the wake
  2. Rightwake start - Value Vector
    • Vector position of the right side of the wake
  3. Color - Value Vector
    • Vector with envelopes to compute color over time
  4. Side velocity - Value
    • Particle velocity outward.
  5. Side Acceleration - Value
    • Particle acceleration outward.
  6. Back velocity - Value
    • Particle velocity extra ontop of spawn position.
  7. Back acceleration - Value
    • Particle acceleration extra ontop of spawn position.
  8. V Envelope - Value
    • V Envelope.
  9. V2 Envelope - Value
    • V2 Envelope.
  10. Bounding extra offset - Value
    • Bounding extra offset.
  11. Birth rate - Value
    • Birth rate

Description

This channel was created to be used with the Wake Waves channel. However it can also be used in other situations like a missle trail.

CallChannel

Calling will render the object.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Objects and Rendering | Particles


Wake Waves - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Wake Waves

From Quest3D

Jump to: navigation, search

Contents

  • 1 Wake Waves
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel

Wake Waves

General

Draw the Wake Particle ontop of the wave shader

Children

  1. Pixel shader surface - ShaderSurface
    • The ocean shader that is rendered
  2. The wake particle object - Wake Particle
    • The wake particle object that is used with this channel
  3. Min bounding box - Value Vector
    • This vector will receive the min bounding box of the wake particle
  4. Max bounding box - Value Vector
    • This vector will receive the max bounding box of the wake particle

Description

This channel is able to cut out a piece of the ocean shader for use with the Wake Particle channel. Together these channels can draw wakes ontop of the ocean waves.

CallChannel

Calling this channel will render the ocean.

Missing Documentation.
No Comments

Categories: Channels | Objects and Rendering | Particles | Incomplete


Articles/Water rendering in Quest3D - Quest3D

Home | Tutorials | Articles | Categories | Channel list | SDK | Exporting | F.A.Q.

Articles/Water rendering in Quest3D

From Quest3D

< Articles
Jump to: navigation, search

Contents

  • 1 Water shader
  • 2 Introduction
  • 3 Custom Meshes
  • 4 The interface
  • 5 Techniques
  • 6 Templates
  • 7 Examples
  • 8 See Also

Water shader

Introduction

Quest3D knows two types of water shading:

  • Flat water with bump mapping
  • Displaced water which is exacly the same as the other water but it uses Pixel Shader 3.0 to displace the geometry of the water.

Custom Meshes

In many cases you might want to place some water at specific locations in your scene. You can link up any mesh to the water channel in the form of an Objectdata. The water channel also allows you to supply a matrix so you can move the mesh around.

The water shader can only be applied to a single mesh. Be aware that each instance of the channel involves extra processing. For optimal results it is always better to combine multiple meshes into a single mesh.

The interface

The interface

When you click the channel you get presented with the following dialog:

Technique

Selects the technique being used for rendering. The hardware requirements for each rechnique and the display method are different for each technique.

Reflection bump

The amount of bumpmapping for reflection.

Color bump

The amount of bumpmapping for the color gradient between sky color and water color.

Distortion bump

The amount of distorion for reflection maps and refraction maps

Texture scale

Allows you to scale the wave and bumpmap size.

Fresnel power

The power of the fresnel term simulation. The fresnel term makes that looking at the water surface at an angle results in a stronger reflection.

Fresnel offset

Allows you to add an offset to the reflection amount caused by the fresnel effect.

Reflection amount

The amount of reflection.

Wavegen Speed

Allows you to scale the speed of the wave simulator.

Wavegen Height

Allows you to scale the wave height of the wave simulator.

Mesh displacement (only in displaced water) This property is only available for the displaced water. It allows you to set the amount of displacement of the geometry.

Water color

The color of the water.

Sky color

The color of the sky.

Water opacity

Allows you to make the water transparent, opaque and everything in between.

Mesh source

Allows you to provide a custom mesh

Transparent

Check this box to make the water transparent.

Techniques

1: Reflection map + refraction map

This Technique renders the waves using all possible effects. It uses a reflection image to render the reflections which means objects in your scene can reflect in the water.

Before you can use this technique you need to provide the water channel with a reflection map and a refraction map.

2: Reflection map + alpha blending

This Technique is the same as above but it uses the environment cube map to render reflection. Using a cube map means you cannot see opject in your scene reflect into the water.

3: Reflection map + alpha blending

This technique uses the same method as the first effect to render the reflection. It uses alpha blending to make the water transparent which means you do not have to provide a refraction map.

4: Reflection cube + alpha blending

This technique uses the same method as the second effect to render the reflection. It uses alpha blending to make the water transparent which means you do not have to provide a refraction map. Since the environment cube is used you also do not have to provide a reflection image.

5: Color only + alpha blending

This effect has no reflection or refraction. It uses alpha blending for transparency.

5: Wireframe

This Technique allows you to visualize the ocean mesh.

_

Templates

There are four templates included. Two templates contain the actual water rendering channels and two provide you with methods to generate a reflection image and a refraction image. These templates are located in the “Scene/Water/” template folder.

Examples

Examples can be found in QUEST3D_INSTALLDIR\Examples\New in 3.5\. For water there is one example called “Water Rendering.cgr”. This demo allows you to switch between 6 rendering modes and you can switch between displaced or undisplaced water.

See Also

One Level Up - Articles

Back to Main Index

Category: Tutorials


Articles/Water rendering in Quest3D - Quest3D

Articles/Water rendering in Quest3D

< Articles(Redirected from Water rendering in Quest3D)
Jump to: navigation, search

Contents

  • 1 Water shader
  • 2 Introduction
  • 3 Custom Meshes
  • 4 The interface
  • 5 Techniques
  • 6 Templates
  • 7 Examples
  • 8 See Also

Water shader

Introduction

Quest3D knows two types of water shading:

  • Flat water with bump mapping
  • Displaced water which is exacly the same as the other water but it uses Pixel Shader 3.0 to displace the geometry of the water.

Custom Meshes

In many cases you might want to place some water at specific locations in your scene. You can link up any mesh to the water channel in the form of an Objectdata. The water channel also allows you to supply a matrix so you can move the mesh around.

The water shader can only be applied to a single mesh. Be aware that each instance of the channel involves extra processing. For optimal results it is always better to combine multiple meshes into a single mesh.

The interface

The interface

When you click the channel you get presented with the following dialog:

Technique

Selects the technique being used for rendering. The hardware requirements for each rechnique and the display method are different for each technique.

Reflection bump

The amount of bumpmapping for reflection.

Color bump

The amount of bumpmapping for the color gradient between sky color and water color.

Distortion bump

The amount of distorion for reflection maps and refraction maps

Texture scale

Allows you to scale the wave and bumpmap size.

Fresnel power

The power of the fresnel term simulation. The fresnel term makes that looking at the water surface at an angle results in a stronger reflection.

Fresnel offset

Allows you to add an offset to the reflection amount caused by the fresnel effect.

Reflection amount

The amount of reflection.

Wavegen Speed

Allows you to scale the speed of the wave simulator.

Wavegen Height

Allows you to scale the wave height of the wave simulator.

Mesh displacement (only in displaced water) This property is only available for the displaced water. It allows you to set the amount of displacement of the geometry.

Water color

The color of the water.

Sky color

The color of the sky.

Water opacity

Allows you to make the water transparent, opaque and everything in between.

Mesh source

Allows you to provide a custom mesh

Transparent

Check this box to make the water transparent.

Techniques

1: Reflection map + refraction map

This Technique renders the waves using all possible effects. It uses a reflection image to render the reflections which means objects in your scene can reflect in the water.

Before you can use this technique you need to provide the water channel with a reflection map and a refraction map.

2: Reflection map + alpha blending

This Technique is the same as above but it uses the environment cube map to render reflection. Using a cube map means you cannot see opject in your scene reflect into the water.

3: Reflection map + alpha blending

This technique uses the same method as the first effect to render the reflection. It uses alpha blending to make the water transparent which means you do not have to provide a refraction map.

4: Reflection cube + alpha blending

This technique uses the same method as the second effect to render the reflection. It uses alpha blending to make the water transparent which means you do not have to provide a refraction map. Since the environment cube is used you also do not have to provide a reflection image.

5: Color only + alpha blending

This effect has no reflection or refraction. It uses alpha blending for transparency.

5: Wireframe

This Technique allows you to visualize the ocean mesh.

_

Templates

There are four templates included. Two templates contain the actual water rendering channels and two provide you with methods to generate a reflection image and a refraction image. These templates are located in the “Scene/Water/” template folder.

Examples

Examples can be found in QUEST3D_INSTALLDIR\Examples\New in 3.5\. For water there is one example called “Water Rendering.cgr”. This demo allows you to switch between 6 rendering modes and you can switch between displaced or undisplaced water.

See Also

One Level Up - Articles

Back to Main Index

Category: Tutorials


Reference Manual/Getting Started/Basics/What are channels - Quest3D

Reference Manual/Getting Started/Basics/What are channels

< Reference Manual
Jump to: navigation, search

Contents

  • 1 What are channels...
    • 1.1 General
    • 1.2 Children
    • 1.3 Channel Types
    • 1.4 Channel Updateing - Tree Count (warning, Advanced)

What are channels...

General

In Quest3D you can build just about anything by connecting modules. Each module is capable of performing an action and storing data.Some modules are so specialized in storing data that their only function is to give or get their data. Other modules are so specialized in performing some action that they do not contain any data. Therefore a module represents an action, data or both.

In Quest3D each module is called a channel. Some channel can operate without using other channels. A text channel is an example of this. A text channel stores a line of text and does not need any other channels to give the text to another channel.

Children

Some channels need other channel before they can perform their function. A channel that can clear the screen needs a color before it can clear the screen for example. In this case the channel needs three values to define the color to clear the screen with. In Quest3D we say that the color values are children of the clear screen channels. The clear screen channel (ClearScreen) has three children in this case. In the picture you can see how this looks in the channel graph of Quest3D.

As you can see the children of a channel are shown as black squares below a channel. You can create a link by dragging a line from one black square to another. You can also drop the line on the channel itself (the line is connected to the first link position that results in a valid link). Not all child link positions are black some link positions are red, blue or green.

Channel Types

A channel does not accept any channel as a child. The clear screen channel only accepts values. This is simply because it needs a color that is specified by three values. Linking text to the clear screen would not make sense.

Very often you want to use another type of channel as a value. An example of this is the Expression Value channel that calculates its value by using a formula and its children. The clear screen channel needs to know that the expression channel can be used in the same way as a value channel. This is why a channel has a type and a base type. The type is unique for each channel. The base type indicates how a channel can be used. A new link is accepted when the base type of a channel matches the type of the link position.

A black link position is a regular link position. The child linked to such a position usually contains some data that is requested by the parent as soon as it needs the data. A red link position means that the parent executes the child. All channels can be linked to a red link position but not all channels do something when you execute them. Executing a text does not have any effect for example. A red link position executes or ‘calls’ a child and therefore it is called a call-channel link position. Links that are connected to a call-channel link position all have an arrow halfway their line.

A green link indicates a link position that accepts multiple links. The green square shifts to the right as soon as you link a child to it. This way you can link another child to the green link position. The green link positions are used to render multiple objects or to play a sound on multiple audio channels for example. A green link position is called a growing link position.

A blue link position indicates an empty spot. A blue link position is called an empty link position. The difference with a normal (black) empty spot is that this empty spot is the result of a link to a green link position.

Channel Updateing - Tree Count (warning, Advanced)

Very often you want a channel to calculate it’s data only once per frame - Updateting Once per Frame. A channel does this by requesting a tree count from Quest3D. If the tree count is the same as the last time the channel was calculated it can skip the calculation. This is all done internally and unnoticeable by the user.

Sometime you want a channel to recalculate itself more than once per frame. You can set the Updating to Continious in the channel General properties dialog to achieve this. The big danger of setting a channel to continious updating is not only a performance decrease but it can also result in an endless loop. An endless loop results in a crash of Quest3D. You should only use this option if you know what you are doing.

One Level Up - Basics

Back to Main Index

Categories: Reference Manual | Getting Started


WiiMote Command - Quest3D

WiiMote Command

Contents

  • 1 WiiMote Command
    • 1.1 Children
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Interface
    • 1.5 Commands
      • 1.5.1 Connect
      • 1.5.2 IsConnected
      • 1.5.3 Disconnect
      • 1.5.4 Get connection status
      • 1.5.5 Get acceleration and orientation
      • 1.5.6 Get IR camera data
      • 1.5.7 Set LEDS on or off
      • 1.5.8 Get button state
      • 1.5.9 Set rumble
      • 1.5.10 Set rumble for a certain amount of time
      • 1.5.11 Get nunchuck acceleration / orientation
      • 1.5.12 Get Nunchuck stick data
      • 1.5.13 Load 16 bit WAV file
      • 1.5.14 Play a loaded 16 bit WAV file
  • 2 Examples
  • 3 External Links

WiiMote Command

Children

  1. All Types Channel – Depends on the selected command.

Description

This Channel is used to interact with the Nintendo Wii motion tracker.

CallChannel

Calling this channel will execute the selected command.

Interface

The command type to be executed can be selected in the combobox in the WiiMote Command channel interface

Change Channel name to command type

When a command is selected, the channel name will be set to the name of the command.

Command to Execute

This selects the command type to execute when the channel is called. Then next paragraph will describe the possible commands.

Commands

Connect

Connect to the WiiMote Device(s)

IsConnected

Determines if the WiiMote is connected

Children

  1. Value ID of the WiiMote, offset is 0

Disconnect

This command stops receiving data from a connected Minuteman device

  1. Value - ID of the WiiMote, offset is 0

Get connection status

Determines whether the connection has been established and the engine is receiving data from the Minuteman device.

Children

  1. Value - ID of the WiiMote, offset is 0
  2. Value - Connection status (0 = disconnected, 1 = connected)

Get acceleration and orientation

  1. Value - ID of the WiiMote, offset is 0
  2. Value Vector - Vector to store the acceleration data in
  3. Value Vector - Vector to store the orientation X, Y, Z in\n
  4. Value - Value to store Pitch in
  5. Value - Value to store Roll in

Note Orientation is currently not supported. The children are reserved for future use.

Get IR camera data

Gets IR camera data of a WiiMote device

  1. Value - ID of the WiiMote, offset is 0
  2. Value Vector - Vector to store X and Y coordinates of sensor bar LED 1
  3. Value Vector - Vector to store X and Y coordinates of sensor bar LED 2
  4. Value Vector - Vector to store X and Y coordinates of sensor bar LED 3
  5. Value Vector - Vector to store X and Y coordinates of sensor bar LED 4

Set LEDS on or off

Set the WiiMote LEDs on or off

  1. Value - ID of the WiiMote, offset is 0
  2. Value - Value of LED 1 (0 = off, 1 = on)
  3. Value - Value of LED 2 (0 = off, 1 = on)
  4. Value - Value of LED 3 (0 = off, 1 = on)
  5. Value - Value of LED 4 (0 = off, 1 = on)

Get button state

Get the state of a button (0 = off, 1 = on)

  1. Value - ID of the WiiMote, offset is 0
  2. Value - Button 1
  3. Value - Button 2
  4. Value - Button A
  5. Value - Button B
  6. Value - Button +
  7. Value - Button -
  8. Value - Button Home
  9. Value - Button Up
  10. Value - Button Down
  11. Value - Button Right
  12. Value - Button Left

Set rumble

Set rumble on or off

  1. Value - ID of the WiiMote, offset is 0
  2. Value - containing rumble state (0 = off, 1 is on)

Set rumble for a certain amount of time

Set rumble on for a certain amount of time

  1. Value - ID of the WiiMote, offset is 0
  2. Value - Value containing the time to turn on rumble (milliseconds)

Get nunchuck acceleration / orientation

  1. Value - ID of the WiiMote, offset is 0
  2. Value Vector - Vector to store the acceleration data in
  3. Value Vector - Vector to store the orientation X, Y, Z in

Get Nunchuck stick data

  1. Value - ID of the WiiMote, offset is 0
  2. Value - Value to store the X coordinate of the stick (-1 = left, 0 = center, 1 = right)
  3. Value -Value to store the Y coordinate of the stick (-1 = up, 0 = center, 1 = down)

Load 16 bit WAV file

  1. Value - File name

Play a loaded 16 bit WAV file

  1. Value - ID of the WiiMote, offset is 0
  2. Value - File name

Examples

  • WiiMote example

External Links

WiiMote on WikiPedia

Categories: Channels | Trackers | VR


Main Page - Quest3D

Main Page

  • Reference Manual
  • What is new in Quest3D 4.0
  • Examples for Quest3D 4.0

Welcome to the Quest3D Wiki. On this WIKI you can find the most up-to-date information about Quest3D. There are manuals, videos, examples and tools for you to enjoy. The Quest3D WIKI is not an open WIKI. To ensure all information stays accurate we have disabled all editing features for regular users. Feel free to contact Quest3D at info@quest3d.com


Win32 DirectoryCommand - Quest3D

Win32 DirectoryCommand

Contents

  • 1 Win32 DirectoryCommand
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Win32 DirectoryCommand

General

Execute command for the directory management and selection.

Children

  1. Depends on setting - All Types Channel
    • Linked child depends on setting

Description

There is currently one command available for this channel, so there is no properties window available. When this channel is called it wil use the linked Text channel to set as scanning directory. You can then use the Win32 DirectoryInfoText or Win32 DirectoryInfoValue channels to read the content.

CallChannel

See description

Applications

Start to scan a directory for files

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 DirectoryInfoText - Quest3D

Win32 DirectoryInfoText

Contents

  • 1 Win32 DirectoryInfoText
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Win32 DirectoryInfoText

General

Retrieve a filename or directory name

Children

  1. Item Number - Value
    • Item number to retrieve, use the Win32 DirectoryInfoValue to get the number of items.

Description

You can retrieve filenames or directories names with this channel. You need to link a Value channel to the first child link sqaure to choose the filename or directory name to retrieve. You can use the Win32 DirectoryInfoValue channel to retreive the number of files or directories in the current directory. You can set the current directory by calling the Win32 DirectoryCommand channel once.

The second Value child is used to select a file or directory name. Set this value to 1 for directories, and 0 for files.

CallChannel

Has no effect

Applications

Get filenames and directories names from a directory.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 DirectoryInfoValue - Quest3D

Win32 DirectoryInfoValue

Contents

  • 1 Win32 DirectoryInfoValue
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Win32 DirectoryInfoValue

General

Retrieve the number of files or directories that are in the scan directory.

Children

  1. Directory or files - Value
    • 0=Files, 1=Directories

Description

Retrieve the number of files or directories that are in the scan directory. The scan directory must first be set by calling the Win32 DirectoryCommand channel once. This channel will be set to the number of files or directories found in the scan directory. You can use the Value channel to choose between the number of files or directories to retreive. Set it to 0 for files, and 1 for directories.

CallChannel

This has no effect

Applications

Together with the Win32 DirectoryCommand and Win32 DirectoryInfoText you can retrieve file and directory names from a directory.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 FillRect - Quest3D

Win32 FillRect

Contents

  • 1 Win32 FillRect
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Win32 FillRect

General

Fill the entire output screen with a given color.

Children

  • Color R - Value

Red value (0 to 1)

  • Color G - Value

Green value (0 to 1)

  • Color B - Value

Blue value (0 to 1)

Description

When you call this channel, the output screen will be filled with the given color. The ouput screen is the viewable area of a window that is created by a viewer. For example the size of an ActiveX control, the inside of the stand alone.

The three children will determine the color that is used to fill the screen.

CallChannel

Fills the output window with the given color

Remarks

  • Always use a If with a NotInEditor channel to call this channel or else the editor window will be cleared!
  • Clear the screen with a color without the need of DirectX 8.0.
  • You will only need to call this channel once to fill the screen.
  • Do not use this channel next to the ClearScreen channel.

Applications

First call this channel once, and then the Win32 TextOut channel to display a simple 2D text on a colored background. You can use this for creating a simple loading screen by just calling these channels once.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 Font - Quest3D

Win32 Font

Contents

  • 1 Win32 Font
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Remarks
    • 1.5 Applications

Win32 Font

General

Holds a windows TrueType font

Description

This channel will remember a TrueType font. It is possible to just remember the settings of a font or the font itself together with the settings.

You can configure the font through the interface of the channel:

Win32 Font Interface

You can see what font is currently selected and with the "Select Font" button you will be able to select another font, the style and the size of that font.

With the "Save font itself in channel" checkbox you will be able to save the font itself (the actual file) in the channel. This makes it possible to distribute a font with your project your users might not have. The channel will not accept copy protected fonts to be saved.

Like many other channels it is also possible to keep the interface open while changing the font. You will see the changes in your scene in real-time.

CallChannel

Will have no effect

Remarks

When you use this channel make sure you select a font, to prevent strange behavior because there is no default font.

Applications

Used by some channels to determine their font. Like the 3DText channel.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 FontCommand - Quest3D

Win32 FontCommand

Contents

  • 1 Win32 FontCommand
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Win32 FontCommand

General

Execute commands on a Win32 Font channel.

Children

  1. Depends on setting - All Types Channel
    • The channels that need to be linked depend on the command chosen.

Description

You can use this channel to execute a command on a Win32 Font channel. There is currently only one command available that can be set in the properties window.

  • Change font of channel - Change the font. You can link a Value to set the font number. The font number can be retrieved with the Win32 FontInfoValue and Win32 FontInfoText channel. You will also need to link the Win32 Font channel to change.

CallChannel

Will execute the selected command, see description.

Applications

Change a font, or make a requester that is able to change a font.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 FontInfoText - Quest3D

Win32 FontInfoText

Contents

  • 1 Win32 FontInfoText
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Win32 FontInfoText

General

Retrieve the name of a font.

Children

  1. Font number - Value
    • Font item number, the number of items can be retreived with the Win32 FontInfoValue channel.

Description

You can get the name of a font with this channel. All font currently installed on the PC that is running the project are automatically listed and each font has gotten a number. You can retrieve the number of installed fonts using the Win32 FontInfoValue channel. You must link a Value channel to select the name of an installed font.

CallChannel

Will have no effect.

Applications

You can use this channel to make a font selection system.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 FontInfoValue - Quest3D

Win32 FontInfoValue

Contents

  • 1 Win32 FontInfoValue
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Applications

Win32 FontInfoValue

General

Retrieve information from the installed fonts

Description

Retrieve the number of installed fonts on the project that is running the PC. You can use this number to select a font with the Win32 FontCommand.

CallChannel

Has no effect

Applications

You can use this channel to create a font selection system.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 MessageBox - Quest3D

Win32 MessageBox

Contents

  • 1 Win32 MessageBox
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Children
    • 1.5 Button Values
    • 1.6 CallChannel
    • 1.7 Remarks
    • 1.8 Applications
    • 1.9 Tips

Win32 MessageBox

General

This will pop up a Windows style message box

Children

  1. Text - Text
    • Text for the body of the MessageBox
  2. Title - Text
    • Text for the title of the MessageBox

Description

This channel will show a Microsoft Windows style default Message Box. The result of the button the user clicked will be set as its value. You can configure it through it's properties dialog:

MessageBox Interface

The following can be configured in the this dialog. The settings show in the picture above have the following result:

Result of MessageBox channel

  • Enter Title - This is the title of the MessageBox. The title will appear in the top left corner of the MessageBox.
  • Enter Text - This is the actual text in the MessageBox. You can enter about any text you would like. The default Windows font is always used. You can also enter multiple lines of text.
  • When to pop up - There are two settings here: "Show MessageBox at CallChannel only" will pop up the MessageBox when the channel is called. You can then at a later time use the value of the channel. When "Show MessageBox at GetFloat and CallChannel" is selected you can either call the channel or just link the channel to a link that accepts value channels. When the value of the channel is accessed the MessageBox will appear and the program will continue when the user has clicked a button.
  • Window Style - Select the style (what buttons) you would like the MessageBox to have. See below for the values a button represents.
  • Icon - You can select the type of icon. The icon is placed at the left side of the text.

Children

You can also link children to this channel to set the title of the MessageBox or the text of the MessageBox itself. When a channel is linked, the configured text through the properties dialog is ignored.

Button Values

Depending on the button the user has clicked the channel will set itself to a value. Here is a list of all buttons available and their values:

  • Abort/Retry/Ignore - 0/1/2
  • OK - 1
  • OK/Cancel - 1/0
  • Retry/Cancel - 1/0
  • Yes/No - 1/0
  • Yes/No/Cancel - 1/0/2

CallChannel

When called it will show the configured MessageBox. After the user pressed a button the value of the channel will be set to the correct results.

Remarks

  • This channel can both be called and can give a value.
  • Cancel can have both value 0 or 2 based on the configuration.

Applications

  • Warn a user about a certain activity
  • Ask a user if he/she is sure he/she wants to take action

Tips

  • Use a OneTime channel to call this channel or you might end up in an endless loop!

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 SetWindow - Quest3D

Win32 SetWindow

Contents

  • 1 Win32 SetWindow
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Moving and Sizing
    • 1.5 Appearance

Win32 SetWindow

General

You can use this channel to change the appearance of the window that is used by Quest3D to show the project in.

Children

  1. X Position - Value
    • Defines the X position of the window
  2. Y Position - Value
    • Defines the Y position of the window
  3. X Scale - Value
    • Defines the horizontal size of the window
  4. Y Scale - Value
    • Defines the vertical size of the window

Description

You can use this channel to change the appearance of the window that is showing your Quest3D production. You are also able to dynamically change the position and the size of the window. None of these settings will work when running the project full-screen.

Moving and Sizing

If you link the correct Value channels to the child link position you are able to move and scale the window. If you keep the child link positions empty, the default size of the window will be used. These settings will not work when the project is running full-screen.

Appearance

You can change the style of the window by using the properties dialog. The "Change Window Style" setting will turn the channel on or off. If you turn the style change off, the last set style will be kept active.

  • Title bar - If this option is turned off, the title bar of the window will be hidden.
  • Sizing border - If this option is turned off, the sizing border of the window will be hidden.
  • System menu - This option is turned off, the system menu (maximize, minimize and close buttons) will be hidden.
  • Always on top - When turned on, the current window will be always on top of the other windows
  • Maximize - When turned on, the current window will be maximized. When no title bar is present it will also maximize over the taskbar else it will leave the taskbar visible.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 SetWindowText - Quest3D

Win32 SetWindowText

Contents

  • 1 Win32 SetWindowText
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Win32 SetWindowText

General

Set the title bar of the current window

Children

  1. Window Title - Text
    • Actual text for the window title

Description

Change the title of the current window into the text linked to the first child of this channel.

With this channel you are able to customize the stand alone viewer so it will show a different window title. This will also change the title shown in the task bar.

You will need to call this channel to change the window title. You can call the channel once, there is no need to keep changing the window title every tree count.

CallChannel

When this channel is called, the title of the current window is changed

Remarks

Use a NotInEditor before calling this channel to prevent the channel group from renaming the editor window title.

Applications

Customize a viewer

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 ShowMouseCursor - Quest3D

Win32 ShowMouseCursor

Contents

  • 1 Win32 ShowMouseCursor
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Applications

Win32 ShowMouseCursor

General

Show or hide the mouse pointer

Children

  1. Show Cursor - Value
    • 1 - Show Mouse pointer, 0 - Hide Mouse pointer
  2. Reset Cursor - Value
    • 0 - Reset the mouse pointer, 1 - Do NOT reset the mouse pointer (mind the values, this is on purpose!)

Description

This channel will control whether windows will hide or show the mouse pointer. If the value linked to the "Show Cursor" child is set to 1 (one) the mouse pointer is hidden and if that child value is set to 0 (zero) the mouse pointer is shown again.

When the mouse pointer is hidden, the position will be reset when the mouse is moved. This means while the mouse is hidden, it will appear again where it was hidden. If you don't want this, you can set the "Reset Cursor" child value to 1 (one). Then the mouse pointer will keep moving while it is hidden.

If you are using the UserInput channel for mouse movement, you will notice that all mouse movement is recorded even when the mouse is reset or hidden. So this channel in combination with the UserInput is perfect for hiding the mouse and keeping the ability react to mouse movement.

CallChannel

When this channel is called the values of the children are used the show or hide and reset the mouse pointer.

Applications

If you are using your own 3D mouse pointer you can hide the window mouse pointer.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 StartProgram - Quest3D

Win32 StartProgram

Contents

  • 1 Win32 StartProgram
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 Fast Startup
    • 1.5 CallChannel
    • 1.6 Remarks

Win32 StartProgram

General

Start a program

Children

  1. Wait Time (ms) - Value
    • Time Quest3D will wait for the process to started.
  2. Parameters - Text
    • Additional parameters that will be passed to the file that is started. Will only work with executables.

Description

This channel will allow you to start a program on disk. Doubleclick the channel to set a program (with or without path) to start. You can also pass parameters to an executable by using the second child.

If the channel is called, the program/file is executed.

Fast Startup

Because Quest3D productions can strain your processor and Windows program might not start immediately when this channel is called. Link a Value channel to the first child link position with a value set to the number of milliseconds that Quest3D should wait before it will continue. A setting of 1000 or less is sufficient most of the times.

CallChannel

When called this channel will start the configured program

Remarks

This channel can't be used in a web page. This channel is not distributed in the viewers package! It can only be used when publishing to a executable file.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


Win32 TextOut - Quest3D

Win32 TextOut

Contents

  • 1 Win32 TextOut
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications

Win32 TextOut

General

Show a text in the current window

Children

  1. X - Value
    • X position of the text in the current window. Leave empty to center text.
  2. Y - Value
    • Y position of the text in the current window. Leave empty to center text.
  3. Text Color R - Value
    • Red color value of text (0 to 1)
  4. Text Color G - Value
    • Green color value of text (0 to 1)
  5. Text Color B - Value
    • Blue color value of text (0 to 1)
  6. Font - Win32 Font
    • Font to use with text

Description

With this channel you can display a simple 2D text in the current window of a viewer.

The text to show is determined by the channel itself, so doubleclick on the channel to change the text to show.

With the first two children (X and Y) you can set the position of the text. Please note that 0,0 is the upper left corner of the current window. If no children are linked, the text will be automatically centered.

The R,G and B children will determine the color of the text. If not set, the default color is white.

With the font child link position you are able to change the font (and the size) of the text to show.

CallChannel

When called the set text will be displayed in the current window.

Remarks

You will only need to call this channel once to show the text. When the ClearScreen channel is called the text is cleared.

Applications

Show a simple loading text

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | System


WinAmp Info Text - Quest3D

WinAmp Info Text

Contents

  • 1 WinAmp Info Text
    • 1.1 General
    • 1.2 Description
    • 1.3 Remarks
      • 1.3.1 WinAmp 2.x
      • 1.3.2 WinAmp 3

WinAmp Info Text

General

Reads information from WinAmp when WinAmp is running.

Description

With this channel you can read the following information from the running WinAmp program:

  • Song Title - The title of the song that is currently playing in WinAmp.
  • Song Length - The length of the song currently playing in the m:ss format.
  • Song Position - The song position of the currently playing song in m:ss format

The channel will set itself to the selected text.

You can select the type of information through the channel interface:

WinAmpInfo Interface

Simply select the information you want from the drop down list and click the "OK" button.

Remarks

WinAmp 2.x

This channel will also work when WinAmp is running, and not only through the Quest3D WinAmp Plugin.

WinAmp 3

This channel will only work if the WinAmp plugin is used. It is not possible to display the song information like it can be done with WinAmp 2.x!

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | System


WinAmp Running - Quest3D

WinAmp Running

Contents

  • 1 WinAmp Running
    • 1.1 General
    • 1.2 Description
    • 1.3 CallChannel
    • 1.4 Remarks
    • 1.5 Applications

WinAmp Running

General

Detect if WinAmp 2.x is running

Description

This channel will set its value to 1 when WinAmp is running or started. If not, the value will be set to 0.

This channel does not need the Quest3D WinAmp Visualization Plugin.

Please note that his channel only works for WinAmp 2.x and not for WinAmp 3!

CallChannel

Has no effect

Remarks

If you want to detect if this channelgroup is running through the WinAmp Visualization Plugin please use the InWinAmp.

Applications

If this channel detects that WinAmp is running then you can use the WinAmpInfo channel to display information about the playing song.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | System


WinAmp Spectrum - Quest3D

WinAmp Spectrum

Contents

  • 1 WinAmp Spectrum
    • 1.1 General
    • 1.2 Children
    • 1.3 Description
    • 1.4 CallChannel
    • 1.5 Remarks
    • 1.6 Applications
    • 1.7 Tips

WinAmp Spectrum

General

Represents the value of a WinAmp sound spectrum or waveform

Children

  1. From - Value
    • The starting point for the channel to fetch the spectrum analyzing information from. This value can range from 0 to 575. Low numbers are low noises.
  2. To - Value
    • The ending point for the channel to fetch the spectrum analyzing information from. This value can range from 0 to 575. Low numbers are low noises. Make sure this number is higher than the From value.

Description

Through the interface you can configure how the value of this channel is calculated:

WinAmpSpectrum Interface

First, you can select the type of information:

  • Spectrum Analyzer - The spectrum analyzer is information decoded by WinAmp and is passed to this channel as 576 values.
  • Waveform Analyzer - This is actually the waveform of the sound that is playing divided in 576 values.

Next you can select the physical sound channel:

  • Left Volume - The left channel
  • Right Volume - The right channel
  • Left+Right Volume - Both left and right volume combined, and the volume is averaged.

Because the waveform and spectrum information is passed to this channel as a large number of values you can combine a number of values with the "From range" and "To range". The channel will add them up and average the value.

The output maximum of this channel is alway 1 (one), this is the maximum volume generated by the WinAmp sound decoder.

CallChannel

Has no effect

Remarks

  • Play around with the spectrum values to see how it is reacting. It seems the low numbers are low noises (like bass-drums) and higher numbers are higher sounding sounds.
  • Please go the WinAmp website for more information on how to use the Spectrum and Waveform information
  • There are a number of templates and examples available that will show the use of this channel

Applications

Create your own WinAmp plugin through the Quest3D WinAmp Visualization Plugin.

Tips

Use the channel to round the values because they can be jumpy.

One Level Up - Channel List
Back to Main Index
To report documentation errors, contact info@quest3d.com

Categories: Channels | Sound | System